Как разбить строку на две части в Excel: от простых функций до Power Query

Разделение текста на части — одна из самых частых задач при работе с данными в Microsoft Excel. Вы загрузили отчёт, где ФИО сотрудников записаны в одной ячейке? Или нужно выделить артикул из строки с описанием товара? Возможно, вам пришёл файл с адресами, где улица и дом перемешаны в одном столбце. В каждом из этих случаев требуется разбить строку на две части — и сделать это можно минимум семью разными способами.

Многие пользователи годами вручную копируют части текста или используют только функцию ТЕКСТ.ПОСЛЕ, даже не подозревая, что в Excel есть инструменты для автоматизации этой рутины. В этой статье мы разберём все актуальные методы — от элементарных формул до продвинутых техник вроде Power Query и VBA. Вы узнаете, какой способ выбрать для одноразовой задачи, а какой подойдёт для обработки тысяч строк. И да, мы не забудем про нюансы с русским языком, многобайтовыми символами и "невидимыми" разделителями вроде табуляции.

Перед тем как погружаться в инструкции, ответьте на один вопрос — это поможет нам сфокусироваться на самых релевантных для вас методах:

📊 Как часто вам нужно разбивать текст в Excel?
Ежедневно
Раз в неделю
Редко, по необходимости
Первый раз столкнулся с задачей

1. Разделение текста по фиксированной длине: функции ЛЕВСИМВ и ПРАВСИМВ

Если вам нужно выделить из строки первые N символов или последние M символов — это задача для функций ЛЕВСИМВ (LEFT) и ПРАВСИМВ (RIGHT). Эти инструменты идеальны, когда разделитель отсутствует, но вы знаете точную длину нужного фрагмента. Например, в номере телефона +79123456789 код страны всегда занимает 2 символа, а основной номер — 10.

Формула для извлечения первых 5 символов из ячейки A1:

=ЛЕВСИМВ(A1; 5)

Для последних 3 символов:

=ПРАВСИМВ(A1; 3)

⚠️ Важно для кириллицы! В русскоязычных версиях Excel в качестве разделителя аргументов функции используется ;, а не ,. Если у вас англоязычная версия, замените ; на ,:

=LEFT(A1, 5)

Где это пригодится:

  • 📇 Выделение кода региона из почтового индекса (например, первые 3 цифры из 123456)
  • 🔢 Разделение артикулов, где первые символы обозначают категорию товара
  • 📱 Извлечение префикса оператора из номера телефона

2. Разделение по разделителю: функция ТЕКСТ.РАЗД

Функция ТЕКСТ.РАЗД (TEXTSPLIT) — это революционное нововведение в Excel 365 и Excel 2021, которое упрощает разделение текста по любому символу-разделителю. В отличие от старых методов, здесь не нужно указывать номер позиции — функция автоматически распознаёт шаблон.

Базовый синтаксис:

=ТЕКСТ.РАЗД(текст; столбец_разделителя; [разделитель_строк]; [по_пустым])

Где:

  • текст — ячейка или строка для разделения
  • столбец_разделителя — символ, по которому делим (например, "," или " ")
  • [по_пустым] — логическое значение, определяющее, игнорировать ли пустые ячейки

Пример: разделим строку "Иванов;Пётр;Сергеевич" по точке с запятой:

=ТЕКСТ.РАЗД(A1; ";")

Функция вернёт массив из трёх ячеек: {"Иванов", "Пётр", "Сергеевич"}.

Что делать, если ТЕКСТ.РАЗД не работает?

Эта функция доступна только в Excel 365 и Excel 2021. Для старых версий используйте комбинацию НАЙТИ + ЛЕВСИМВ/ПРАВСИМВ или инструмент "Текст по столбцам".

⚠️ Внимание! Если в ваших данных используются несколько разделителей подряд (например, "Иванов,,Пётр"), добавьте четвёртый аргумент ИСТИНА, чтобы игнорировать пустые значения:

=ТЕКСТ.РАЗД(A1; ";"; ;ИСТИНА)

3. Классический метод: инструмент "Текст по столбцам"

Это самый универсальный способ, который работает во всех версиях Excel — от 2003 до 2023. Он не требует знания формул и подходит для одноразовых задач. Алгоритм прост:

  1. Выделите столбец с данными для разделения.
  2. Перейдите на вкладку ДанныеТекст по столбцам.
  3. Выберите С разделителями (если разделитель есть) или Фиксированная ширина (если делите по количеству символов).
  4. Укажите разделитель (запятая, точка с запятой, пробел, табуляция) или задайте ширину столбцов.
  5. Нажмите Готово.

Преимущества метода:

  • 🔄 Работает с большими объёмами данных (десятки тысяч строк)
  • 📊 Позволяет предварительно просмотреть результат
  • 🛠 Поддерживает несколько разделителей одновременно

Недостатки:

  • ⚠️ Разделение нединамично — если исходные данные изменятся, процедуру нужно повторять.
  • 📉 Не сохраняет формулу — результат записывается как значения.

Убедитесь, что в столбце справа нет данных (они затрутся)|Проверьте, что разделитель одинаковый во всех строках|Сохраните резервную копию файла|Удалите лишние пробелы функцией СЖПРОБЕЛЫ

-->

4. Разделение с помощью Power Query (для сложных задач)

Power Query — это инструмент для ETL-процессов (извлечение, преобразование, загрузка), который идеально подходит для регулярной обработки больших массивов данных. Если вам нужно ежемесячно разбивать отчёты по одному шаблону — этот метод сэкономит часы времени.

Пошаговая инструкция:

  1. Выделите исходные данные и нажмите ДанныеИз таблицы/диапазонаExcel 2016+).
  2. В открывшемся редакторе Power Query выберите столбец для разделения.
  3. На вкладке Преобразование нажмите Разделить столбецПо разделителю.
  4. Укажите разделитель (например, запятую или пробел) и настройте параметры.
  5. Нажмите Закрыть и загрузить.

Преимущества Power Query:

КритерийPower QueryТекст по столбцамФормулы
Динамическое обновление✅ Да❌ Нет✅ Да
Обработка >100к строк✅ Быстро⚠️ Медленно❌ Очень медленно
Сложные разделители✅ Регулярные выражения❌ Только простые⚠️ Ограничено
Сохранение шагов✅ Да❌ Нет❌ Нет

5. Разделение с помощью формул: НАЙТИ + ПСТР

Когда разделитель в строке не фиксирован (например, пробел между фамилией и именем может быть один или несколько), на помощь приходит комбинация функций НАЙТИ (FIND) и ПСТР (MID). Этот метод универсален и работает во всех версиях Excel.

Допустим, у нас в ячейке A1 строка "Иванов И.И.", и нужно разделить её на фамилию и инициалы. Формула для фамилии:

=ЛЕВСИМВ(A1; НАЙТИ(" "; A1) - 1)

Для инициалов:

=ПСТР(A1; НАЙТИ(" "; A1) + 1; 10)

Где 10 — максимальная длина инициалов (можно указать больше, если нужно).

Если разделитель может повторяться (например, несколько пробелов), используйте ПОИСК вместо НАЙТИ — она игнорирует регистр и поддерживает подстановочные знаки:

=ЛЕВСИМВ(A1; ПОИСК(" ; "; A1) - 1)

⚠️ Внимание! Если разделитель в строке отсутствует, функция НАЙТИ вернёт ошибку #ЗНАЧ!. Чтобы избежать этого, оберните формулу в ЕСЛИОШИБКА:

=ЕСЛИОШИБКА(ЛЕВСИМВ(A1; НАЙТИ(" "; A1) - 1); A1)

6. Разделение с помощью VBA (для автоматизации)

Если вам нужно разделить тысячи строк по сложному шаблону (например, выделить email из строки с контактными данными), макрос на VBA сэкономит время. Ниже приведён код, который разбивает текст по первому пробелу и записывает результаты в соседние столбцы:

Sub SplitText()

Dim rng As Range

Dim cell As Range

Dim splitText() As String

Set rng = Selection 'Выделенный диапазон

For Each cell In rng

If Not IsEmpty(cell.Value) Then

splitText = Split(cell.Value, " ") 'Разделитель - пробел

cell.Offset(0, 1).Value = splitText(0) 'Первая часть

cell.Offset(0, 2).Value = splitText(1) 'Вторая часть

End If

Next cell

End Sub

Как использовать:

  1. Нажмите Alt + F11, чтобы открыть редактор VBA.
  2. Вставьте код в новый модуль (InsertModule).
  3. Выделите ячейки с данными и запустите макрос (F5).

Преимущества VBA:

  • 🤖 Автоматизация рутинных задач
  • 🔧 Гибкость — можно написать логику для любого шаблона
  • ⚡ Быстродействие — обрабатывает данные быстрее формул

Как модифицировать макрос для другого разделителя?

Замените " " в строке Split(cell.Value, " ") на нужный символ, например "," для запятой или Chr(9) для табуляции.

7. Разделение с учётом регулярных выражений (продвинутый уровень)

Для сложных шаблонов разделения (например, когда разделителем служит запятая, но только если за ней идёт пробел) потребуются регулярные выражения. В стандартном Excel их нет, но можно использовать:

  • 📊 Power Query (поддерживает простые regex)
  • 🤖 VBA с объектом RegExp
  • 🔗 Надстройки вроде Kutools for Excel

Пример кода на VBA для разделения по запятой, за которой идёт пробел:

Function SplitByRegex(text As String) As Variant

Dim regex As Object

Set regex = CreateObject("VBScript.RegExp")

regex.Pattern = ", " 'Разделитель - запятая + пробел

SplitByRegex = regex.Split(text)

End Function

Чтобы вызвать эту функцию, используйте:

=SplitByRegex(A1)

Она вернёт массив значений, который можно дальней обработать функциями ИНДЕКС или ВЫБОР.

Сравнение методов: какой выбрать?

Выбор способа зависит от трёх факторов:

  1. Объём данных: для разовой задачи подойдёт "Текст по столбцам", для регулярной — Power Query.
  2. Сложность шаблона: фиксированная длина — ЛЕВСИМВ, динамический разделитель — ТЕКСТ.РАЗД или VBA.
  3. Версия Excel: в Excel 365 доступны ТЕКСТ.РАЗД и Power Query, в Excel 2010 — только формулы или макросы.

Рекомендации по выбору:

ЗадачаЛучший методАльтернатива
Разовое разделение по простому разделителю"Текст по столбцам"ТЕКСТ.РАЗД (если Excel 365)
Динамическое разделение с обновлениемPower QueryФормулы ЛЕВСИМВ/ПРАВСИМВ
Сложный шаблон (регулярные выражения)VBA с RegExpPower Query (ограниченно)
Фиксированная длина фрагментовЛЕВСИМВ/ПРАВСИМВ"Текст по столбцам" (фиксированная ширина)

FAQ: Частые вопросы по разделению текста в Excel

Как разбить строку, если разделитель — это запятая, но в тексте есть запятые внутри кавычек (например, "Иванов, Петр", город Москва)?

Используйте Power Query с настройкой разделителя на уровне цитаты или напишите VBA-макрос с учётом парных кавычек. Стандартные функции ТЕКСТ.РАЗД или "Текст по столбцам" здесь не справятся.

Можно ли разделить текст на две части, если разделитель — это перенос строки (Alt+Enter)?

Да. В формулах используйте символ CHAR(10) как разделитель:

=ТЕКСТ.РАЗД(A1; CHAR(10))

В инструменте "Текст по столбцам" выберите разделитель знак параграфа (↲).

Как автоматически разделить ФИО на три столбца (фамилия, имя, отчество)?

Если формат строго "Фамилия Имя Отчество", используйте:

=ТЕКСТ.РАЗД(A1; " ")

Для нестандартных форматов (например, с инициалами) напишите цепочку из НАЙТИ + ПСТР или макрос на VBA.

Почему после разделения в ячейках появляются знаки #ЗНАЧ!?

Ошибка возникает, если:

  • В формуле НАЙТИ разделитель не найден (оберните в ЕСЛИОШИБКА).
  • В "Тексте по столбцам" указан неверный разделитель.
  • В Power Query неверно настроен тип данных.

Как разделить текст на две части, если разделитель — это несколько пробелов подряд?

Сначала замените несколько пробелов на один с помощью СЖПРОБЕЛЫ, затем используйте стандартные методы:

=ТЕКСТ.РАЗД(СЖПРОБЕЛЫ(A1); " ")

Или в Power Query настройте параметр "Сжать пробелы" при разделении.