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

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

Но как выбрать подходящую формулу? Всё зависит от структуры ваших данных. Если текст разделён фиксированным символом (запятая, точка с запятой, тире), подойдёт одна группа функций. Если нужно извлечь часть строки по позиции (например, первые 5 символов) — другая. А для сложных случаев, когда разделители нестабильны или данные неструктурированы, потребуются комбинации формул или даже Power Query. В этой статье мы разберём все актуальные способы — от базовых до продвинутых, с примерами и пояснениями.

Вы узнаете:

  • 🔹 Как разбить текст по разделителю (пробел, запятая, точка) с помощью ТЕКСТРАСП и ЛЕВСИМВ/ПРАВСИМВ
  • 🔹 Почему ПСТР лучше для извлечения фрагментов по фиксированным позициям
  • 🔹 Как обработать данные с нерегулярными разделителями (например, "Иванов И.П." или "Москва, ул. Ленина, д.5")
  • 🔹 Когда стоит использовать Power Query вместо формул

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

Функция ТЕКСТРАСП (в английской версии — TEXTSPLIT) появилась в Excel 365 и Excel 2021 и стала настоящим спасением для работы с текстовыми данными. Она позволяет разбивать строку на части по указанному разделителю (или нескольким разделителям) и выводить результаты в отдельные ячейки.

Синтаксис функции:

=ТЕКСТРАСП(текст; [разделитель_столбцов]; [разделитель_строк]; [по_столбцам]; [по_строкам]; [совпадение_с_пустой_ячейкой])

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

=ТЕКСТРАСП(A1; ";")

Результат автоматически «разольётся» по соседним ячейкам справа. Если данных много, Excel создаст динамический массив и заполнит столько столбцов, сколько потребуется.

⚠️ Внимание: Функция ТЕКСТРАСП недоступна в Excel 2019 и более ранних версиях. Для них используйте комбинацию ЛЕВСИМВ/ПРАВСИМВ или ПСТР (см. следующие разделы).
  • 📌 Плюсы: простой синтаксис, автоматическое заполнение соседних ячеек, поддержка нескольких разделителей.
  • ⚠️ Минусы: работает только в новых версиях Excel, может конфликтовать с другими динамическими массивами на листе.
📊 Какую версию Excel вы используете?
Excel 365
Excel 2021
Excel 2019
Excel 2016 или старше

2. Извлечение части строки по позиции: ЛЕВСИМВ, ПРАВСИМВ, ПСТР

Если ваш текст имеет фиксированную структуру (например, первые 3 символа — код отдела, следующие 5 — номер документа), удобнее использовать функции ЛЕВСИМВ (LEFT), ПРАВСИМВ (RIGHT) и ПСТР (MID). Они извлекают фрагмент строки по заданным позициям.

Примеры:

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

Допустим, у вас в ячейке A1 хранится строка "Договор №12345 от 01.01.2023", и вам нужно извлечь номер договора. Формула будет такой:

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

Здесь ПОИСК("№"; A1) находит позицию символа «№», а +1 сдвигает начало извлечения на один символ вправо. Последний аргумент (5) указывает длину извлекаемого фрагмента.

Функция Синтаксис Пример Результат для "АБВГД-12345"
ЛЕВСИМВ =ЛЕВСИМВ(текст; количество_символов) =ЛЕВСИМВ(A1; 5) "АБВГД"
ПРАВСИМВ =ПРАВСИМВ(текст; количество_символов) =ПРАВСИМВ(A1; 5) "345"
ПСТР =ПСТР(текст; начальная_позиция; количество_символов) =ПСТР(A1; 7; 5) "12345"
=ПСТР(A1; ПОИСК("("; A1) + 1; ПОИСК(")"; A1) - ПОИСК("("; A1) - 1)
-->

3. Разделение текста с нерегулярными разделителями

Часто данные имеют нестабильную структуру. Например, в одной строке разделитель — запятая, в другой — точка с запятой, а в третьей — пробел. Или разделителей несколько подряд (например, "Москва,, ул. Ленина"). В таких случаях ТЕКСТРАСП может не сработать корректно, а ручная правка займёт слишком много времени.

Решение — использовать комбинацию функций:

  1. 🔧 Заменить все возможные разделители на один с помощью ПОДСТАВИТЬ или ЗАМЕНИТЬ.
  2. 🔧 Применить ТЕКСТРАСП (или ЛЕВСИМВ/ПСТР для старых версий).

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

=ТЕКСТРАСП(ПОДСТАВИТЬ(ПОДСТАВИТЬ(A1; ","; "|"); ";"; "|"); "|")

Здесь мы сначала заменяем запятые и точки с запятой на вертикальную черту (|), а затем разбиваем строку по этому символу.

⚠️ Внимание: Если в данных встречаются кавычки или апострофы, их тоже нужно учитывать в замене. Например, для строки 'Иванов', "Петр" потребуется дополнительная обработка:
=ТЕКСТРАСП(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(A1; "'"; ""); """"; ""); ", "; "|"); "|")

4. Разделение текста по нескольким разделителям одновременно

Функция ТЕКСТРАСП поддерживает массив разделителей. Это значит, что вы можете указать несколько символов, по которым нужно разбивать строку. Например, если данные разделены или запятой, или точкой с запятой, или двоеточием.

Синтаксис:

=ТЕКСТРАСП(A1; {","; ";"; ":"}; ; ИСТИНА)

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

Пример: в ячейке A1 текст "Москва: ул. Ленина, д.5; кв.12". Формула:

=ТЕКСТРАСП(A1; {":", ",", ";"}; ; ИСТИНА)

Результат:

  • 📍 "Москва"
  • 📍 " ул. Ленина"
  • 📍 " д.5"
  • 📍 " кв.12"

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

=СЖПРОБЕЛЫ(ТЕКСТРАСП(A1; {":", ",", ";"}; ; ИСТИНА))

1. Проверить наличие лишних пробелов (использовать СЖПРОБЕЛЫ)

2. Заменить все возможные разделители на один универсальный символ

3. Удалить кавычки и апострофы, если они мешают разбиению

4. Проверить, нет ли в данных самих разделителей (например, запятая внутри кавычек)

-->

5. Разделение текста по строкам (многострочный текст)

Если в одной ячейке хранится многострочный текст (разделённый символом переноса строки), его тоже можно разбить на отдельные строки. Для этого в ТЕКСТРАСП используется аргумент разделитель_строк.

Пример: в ячейке A1 текст:

"Иванов Петр

Сергеевич

1985 г.р."

Формула для разбиения по строкам:

=ТЕКСТРАСП(A1; ; СИМВОЛ(10))

Здесь СИМВОЛ(10) — это символ переноса строки (в Windows используется пара СИМВОЛ(13)&СИМВОЛ(10), но ТЕКСТРАСП корректно обрабатывает и одиночный СИМВОЛ(10)).

Если нужно разбить текст и по столбцам, и по строкам одновременно, используйте оба разделителя:

=ТЕКСТРАСП(A1; ";", СИМВОЛ(10))

Эта формула разобьёт текст по точке с запятой по столбцам, а по переносу строки — по строкам.

6. Альтернативные способы: Power Query и «Текст по столбцам»

Формулы — не единственный способ разделить текст в Excel. В некоторых случаях удобнее использовать:

  • 🛠️ Инструмент «Текст по столбцам» (меню Данные → Текст по столбцам). Подходит для одноразовых операций, когда не нужно сохранять динамическую связь с исходными данными.
  • 🛠️ Power Query (меню Данные → Получить данные → Из таблицы/диапазона). Мощный инструмент для сложных преобразований, включая разделение текста с предварительной очисткой данных.

например, в Power Query вы можете:

  1. Загрузить данные в редактор.
  2. Выбрать столбец → Разделить столбец → По разделителю.
  3. Указать символ разделителя (или несколько символов).
  4. При необходимости применить дополнительные преобразования (удаление пробелов, изменение регистра и т. д.).

Power Query особенно полезен, если:

  • 📊 Данные обновляются регулярно, и нужно сохранять шаги обработки.
  • 📊 Требуется сложная предварительная очистка (замена текста, удаление дубликатов).
  • 📊 Нужно разделить текст на основе условной логики (например, если строка содержит определённое слово).
⚠️ Внимание: При использовании Текст по столбцам исходные данные заменяются на результат разбиения. Если нужно сохранить оригинал, предварительно сделайте копию столбца.
Как разделить текст с помощью VBA

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

Sub SplitByLastDot()

Dim rng As Range

Dim cell As Range

Dim lastDot As Integer

Dim arr() As String

Set rng = Selection

For Each cell In rng

lastDot = InStrRev(cell.Value, ".")

If lastDot > 0 Then

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

cell.Offset(0, 1).Value = arr(UBound(arr))

cell.Value = Left(cell.Value, lastDot - 1)

End If

Next cell

End Sub

Чтобы использовать макрос, нажмите Alt + F11, вставьте код в модуль и запустите его из меню Макросы или назначьте на кнопку.

7. Ошибки и решения при разделении текста

При работе с текстовыми данными часто возникают ошибки. Вот самые распространённые и способы их исправления:

Ошибка Причина Решение
#ЗНАЧ! в ПСТР Начальная позиция больше длины строки Проверьте аргументы с помощью ДЛСТР:
=ЕСЛИ(ДЛСТР(A1) >= 10; ПСТР(A1; 5; 10); "")
Лишние пробелы в результате Исходный текст содержит пробелы перед/после разделителей Оберните формулу в СЖПРОБЕЛЫ или используйте ПОДСТАВИТЬ для удаления пробелов:
=ПОДСТАВИТЬ(ТЕКСТРАСП(A1; ","); " "; "")
#ИМЯ? в ТЕКСТРАСП Функция недоступна в вашей версии Excel Используйте ЛЕВСИМВ/ПСТР или обновите Excel до 2021/365
Неправильное разбиение по датам Excel автоматически преобразует даты в формат числа Предварительно отформатируйте столбец как Текстовый или используйте апостроф перед датой

Критическая ошибка: если в данных есть кавычки или апострофы, которые совпадают с разделителями, ТЕКСТРАСП может разбить строку некорректно. Всегда проверяйте исходные данные на наличие таких символов и при необходимости удаляйте их с помощью ПОДСТАВИТЬ.

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

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

Используйте комбинацию СЖПРОБЕЛЫ и ТЕКСТРАСП:

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

Функция СЖПРОБЕЛЫ заменит несколько пробелов на один, после чего ТЕКСТРАСП корректно разобьёт строку.

❓ Можно ли разделить текст по регулярному выражению (regex)?

В стандартных формулах Excel нет поддержки регулярных выражений. Однако вы можете:

  • 🔹 Использовать Power Query (там есть базовая поддержка regex через Text.Select или Text.Remove).
  • 🔹 Написать макрос на VBA с использованием RegExp.
  • 🔹 Воспользоваться надстройками вроде Kutools for Excel.
❓ Как разделить текст на слова, если разделитель — пробел, но в некоторых ячейках есть переносы строк?

Сначала замените переносы строк на пробелы, затем примените ТЕКСТРАСП:

=ТЕКСТРАСП(ПОДСТАВИТЬ(A1; СИМВОЛ(10); " "); " ")

Если нужно сохранить переносы как отдельные разделители, используйте массив разделителей:

=ТЕКСТРАСП(A1; {" ", СИМВОЛ(10)})
❓ Почему после разбиения текста некоторые ячейки пустые?

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

  • 🔸 В исходном тексте есть несколько разделителей подряд (например, "Иванов,, Петр").
  • 🔸 В конце или начале строки стоит разделитель (например, ",Иванов").
  • 🔸 Вы используете ТЕКСТРАСП с аргументом ИСТИНА для игнорирования пустых ячеек, но где-то разделитель отсутствует.

Чтобы избежать пустых ячеек, предварительно очистите данные с помощью СЖПРОБЕЛЫ и ПОДСТАВИТЬ.

❓ Как разделить текст на части, если разделитель — это слово (например, "номер")?

Используйте комбинацию ПОИСК и ПСТР:

=ЛЕВСИМВ(A1; ПОИСК("номер"; A1) - 1)  // текст до слова "номер"

=ПСТР(A1; ПОИСК("номер"; A1) + ДЛСТР("номер"); 100) // текст после слова "номер"

Если слово встречается несколько раз, используйте ПОИСКБ для поиска с заданной позиции:

=ПОИСКБ("номер"; A1; ПОИСК("номер"; A1) + 1)