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

Когда требуется разбиение строк в Excel и зачем это нужно

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

В этой статье разберём 5 способов разбиения строк — от элементарных функций до продвинутых инструментов вроде Power Query. Вы узнаете, как:

  • 🔹 Разделить текст по заданному символу (запятая, пробел, тире)
  • 🔹 Вытащить часть строки по номеру позиции (первые 3 символа, с 5-го по 10-й)
  • 🔹 Использовать текстовые функции для сложных разборов (например, извлечь домен из email)
  • 🔹 Автоматизировать процесс с помощью Power Query или VBA

Все методы протестированы на Excel 2013–2026 (включая Microsoft 365) и работают как в десктопной версии, так и в Excel Online. Особое внимание уделим нюансам с кириллическими символами и многобайтовыми кодировками — они часто ломают стандартные функции.

📊 Какой способ разбиения строк вы используете чаще?
Функции ТЕКСТ/ПСТР
Разделитель по символу
Power Query
Макросы/VBA
Не знаю, как это делать

Способ 1: Разделение по разделителю (самый быстрый метод)

Если ваш текст имеет чёткий разделитель — запятую, точку с запятой, пробел или тире — этот способ сэкономит вам 90% времени. Работает даже для новичков.

Пример: у вас в ячейке A1 текст "Иванов;Иван;Иванович", и нужно разбить его на три отдельные ячейки по символу ";".

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

Убедитесь, что разделитель ОДИНАКОВ во всех строках|

Проверьте отсутствие лишних пробелов (используйте =СЖПРОБЕЛЫ)|

Сохраните резервную копию файла|

Выделите ПУСТОЙ столбец справа от исходных данных (туда пойдёт результат)-->

⚠️ Внимание: Если в тексте встречаются кавычки (например, "Москва, ул. "Ленина", д.5"), Excel может неправильно интерпретировать разделители. В таком случае предварительно замените кавычки на одинарные (') функцией =ПОДСТАВИТЬ(A1;""""; "'").

Исходный текст Разделитель Результат в столбце B Результат в столбце C
Smith,John , Smith John
123-45-6789 - 123 45
user@example.com @ user example.com

Способ 2: Функции ЛЕВСИМВ, ПРАВСИМВ и ПСТР (для фиксированных позиций)

Когда разделителя нет, но вы знаете точные позиции частей строки, используйте текстовые функции. Например, в артикулах товара первые 5 символов — категория, следующие 3 — подкатегория.

Основные функции:

  • 🔹 =ЛЕВСИМВ(A1;5) — возвращает первые 5 символов слева.
  • 🔹 =ПРАВСИМВ(A1;3) — возвращает 3 последних символа.
  • 🔹 =ПСТР(A1;6;4) — возвращает 4 символа, начиная с 6-й позиции.

Пример: в ячейке A1 текст "ABC12345DEF". Чтобы извлечь "12345", используйте:

=ПСТР(A1;4;5)
=ЛЕВСИМВ(A1;ПОИСК("@";A1)-1) — вернёт всё до "@".-->

⚠️ Внимание: Функции ЛЕВСИМВ/ПРАВСИМВ в английской версии Excel называются LEFT/RIGHT. Если у вас русская версия, но формулы не работают, проверьте регион в настройках Файл → Параметры → Язык.

Способ 3: Комбинация ПОИСК + ПСТР (для динамических позиций)

Допустим, у вас в ячейках фамилии и инициалы в формате "Иванов И.И.", и нужно отделить фамилию от инициалов. Позиция пробела нефиксированная — здесь поможет ПОИСК.

Формула для извлечения фамилии:

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

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

=ПСТР(A1;ПОИСК(" ";A1)+1;3)

Разберём пошагово:

  1. ПОИСК(" ";A1) находит позицию пробела (например, 7-й символ в "Иванов И.И.").
  2. ЛЕВСИМВ берёт всё слева до пробела (7-1=6 символов).
  3. ПСТР берёт 3 символа после пробела (7+1=8 — стартовая позиция).
Как извлечь домен из email без ошибок?

Используйте комбинацию:

=ПРАВСИМВ(A1;ДЛСТР(A1)-ПОИСК("@";A1))

Для user@example.com вернёт example.com.

Если в ячейке нет "@", формула выдаст ошибку — обработайте её с помощью ЕСЛИОШИБКА.

Способ 4: Power Query (для больших объёмов данных)

Power Query — инструмент для продвинутой обработки данных, встроенный в Excel 2016+. Он позволяет разбивать строки по разделителям, регулярным выражениям и даже создавать пользовательские правила.

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

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

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

  • 🔹 Обрабатывает миллионы строк без тормозов.
  • 🔹 Сохраняет шаги преобразования — при обновлении данных разбиение применятся автоматически.
  • 🔹 Поддерживает регулярные выражения (например, разбить по нескольким пробелам подряд).

Способ 5: Макросы VBA (для автоматизации повторяющихся задач)

Если вам регулярно приходится разбивать строки по одним и тем же правилам, напишите макрос. Например, для разделения полного адреса на город, улицу и дом.

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

Sub SplitText()

Dim rng As Range

Dim cell As Range

Dim arr() As String

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

For Each cell In rng

If InStr(cell.Value, ",") > 0 Then

arr = Split(cell.Value, ",")

cell.Offset(0, 1).Value = arr(0) 'Первая часть в соседнюю ячейку

cell.Offset(0, 2).Value = arr(1) 'Вторая часть — через одну

End If

Next cell

End Sub

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

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

⚠️ Внимание: Макросы работают только в файлах с расширением .xlsm (с поддержкой макросов). Если вы сохраните файл как .xlsx, код будет удалён!

Частые ошибки и как их избежать

Даже опытные пользователи сталкиваются с проблемами при разбиении строк. Вот самые распространённые:

Ошибка Причина Решение
Функция ПСТР возвращает #ЗНАЧ! Неверно указана стартовая позиция (например, 0 или больше длины строки) Проверьте результат ПОИСК перед использованием в ПСТР
При разделении по столбцам данные "съезжают" В тексте разное количество разделителей Используйте Текст по столбцам с опцией Считать последовательные разделители за один
Кириллические символы заменяются на ??? Неверная кодировка при импорте данных Сохраните файл в UTF-8 или используйте =ПОДСТАВИТЬ для исправления

Ещё одна типичная проблема — лишние пробелы в начале или конце частей строки. Чтобы их убрать, оберните результат в функцию СЖПРОБЕЛЫ:

=СЖПРОБЕЛЫ(ЛЕВСИМВ(A1;ПОИСК(" ";A1)))

FAQ: Ответы на популярные вопросы

Можно ли разбить строку по нескольким разделителям одновременно?

Да, но не стандартными функциями. Используйте:

  1. Power Query: выберите Разделить столбец → По разделителю и укажите несколько символов через запятую (например, ,;-).
  2. VBA: модифицируйте функцию Split, чтобы она принимала массив разделителей.

Пример для VBA:

arr = Split(Replace(Replace(A1, ",", "|"), ";", "|"), "|")
Как разбить строку, если разделитель — это последовательность символов (например, "->")?

Используйте функцию ПОДСТАВИТЬ, чтобы заменить последовательность на один уникальный символ, а затем разделите по нему:

  1. Замените "->" на "|": =ПОДСТАВИТЬ(A1;"->";"|").
  2. Разделите результат по символу "|" через Текст по столбцам.

Для Power Query выберите Разделить по пользовательскому разделителю и введите ->.

Почему после разбиения в некоторых ячейках появляются знаки #Н/Д?

Это происходит, если:

  • 🔹 В исходной строке нет разделителя (например, вы ищете "@" в тексте без него).
  • 🔹 Формула ссылается на несуществующую позицию (например, =ПСТР(A1;100;5) для строки длиной 10 символов).

Решение: оберните формулу в ЕСЛИОШИБКА:

=ЕСЛИОШИБКА(ПСТР(A1;ПОИСК("@";A1)+1;10);"")
Как разбить строку на слова (разделитель — пробел)?

Используйте Текст по столбцам с разделителем пробел, но:

  1. Предварительно замените множественные пробелы на один: =СЖПРОБЕЛЫ(A1).
  2. В мастере разделения отметьте Считать последовательные разделители за один.

Для извлечения N-го слова используйте формулу:

=ТРИМ(ПСТР(ПОДСТАВИТЬ(" " & $A1 & " ";REPT(" ";100);" ");100*(N-1)+1;100))

Где N — номер слова (1, 2, 3...).

Можно ли разбить строку без потери исходных данных?

Да, все методы (кроме Текст по столбцам в режиме замены) сохраняют оригинал:

  • 🔹 Функции (ПСТР, ЛЕВСИМВ) — результат записывается в новые ячейки.
  • 🔹 Power Query — создаёт новую таблицу, исходные данные остаются нетронутыми.
  • 🔹 VBA — можно запрограммировать вывод в другие столбцы.

Совет: перед массовыми изменениями создавайте резервную копию листа (ПКМ по ярлыку листа → Переместить/скопировать).