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

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

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

1. Способ: Функция «Текст по столбцам» (без формул)

Самый простой способ разделить текст — использовать встроенный инструмент «Текст по столбцам». Он не требует знания формул и работает даже в старых версиях Excel (начиная с Excel 2003). Подходит для данных с чёткими разделителями: запятыми, точками с запятой, табуляцией или пробелами.

Как это сделать:

  • 📌 Выделите ячейки с текстом, который нужно разделить.
  • 🔧 Перейдите на вкладку ДанныеТекст по столбцам.
  • 🔄 В первом окне выберите С разделителями (если текст разбит символами) или Фиксированная ширина (если данные выровнены по столбцам).
  • ✅ Нажмите Готово — Excel автоматически разобьёт текст по соседним ячейкам.

Преимущество метода: мгновенный результат без формул. Недостаток — если исходные данные изменятся, придётся повторять процедуру заново. Для динамического обновления лучше использовать формулы (см. следующие разделы).

📊 Какой способ разделения текста вы используете чаще?
Функция "Текст по столбцам"
Формулы ЛЕВСИМВ/ПРАВСИМВ
ТЕКСТ.РАСП или ТЕКСТДОБ
Power Query
Макросы VBA

2. Способ: Формулы ЛЕВСИМВ, ПРАВСИМВ и ПСТР

Если вам нужно извлечь часть текста по фиксированному количеству символов (например, первые 3 буквы или последние 5 цифр), подойдут функции:

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

Пример: у вас в ячейке A1 текст "Код:12345-АБВ", и нужно вытащить "12345". Формула будет такой: =ПСТР(A1;6;5) (начинаем с 6-го символа, берём 5 знаков).

Как найти позицию символа для ПСТР?

Используйте функцию =НАЙТИ(":";A1) — она вернёт номер позиции двоеточия (в примере это 5).

Ограничение: эти функции работают только с фиксированными позициями. Если разделитель в тексте плавающий (например, пробел между словами может быть один или несколько), лучше использовать ТЕКСТ.РАСП или комбинацию с ПОИСК/НАЙТИ.

3. Способ: Функция ТЕКСТ.РАСП (Excel 2019 и новее)

Самая современная и гибкая функция для разделения текста — ТЕКСТ.РАСП (или TEXTSPLIT в английской версии). Она появилась в Excel 2019 и Microsoft 365 и умеет:

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

Синтаксис:

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

Примеры:

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

4. Способ: Функция ТЕКСТДОБ (для старых версий Excel)

В Excel 2016 и более ранних версиях вместо ТЕКСТ.РАСП можно использовать ТЕКСТДОБ (или TEXTJOIN). Она не разбивает текст, а наоборот — объединяет данные из нескольких ячеек. Однако её можно применять в комбинации с другими функциями для сложных случаев.

Пример: у вас в ячейке A1 текст "Яблоки,Груши,Бананы", и нужно разделить его по запятым в отдельные столбцы. Формула для первой ячейки:

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

Для второй:

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

Это громоздко, поэтому для старых версий Excel лучше использовать Power Query (см. следующий раздел) или макросы.

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

Power Query — это инструмент для обработки и трансформации данных, встроенный в Excel 2016 и новее. Он идеален для разделения текста в больших таблицах (тысячи строк), так как:

  • 🔄 Обрабатывает данные без формул (не нагружает файл).
  • 🔄 Позволяет сохранять шаги и обновлять результат при изменении исходных данных.
  • 🔄 Умеет разбивать текст по нескольким разделителям одновременно.

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

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

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

Предупреждение: если в тексте есть неоднородные разделители (например, то запятая, то точка с запятой), предварительно замените их на один символ через НАЙТИ/ЗАМЕНИТЬ.

6. Способ: Макрос VBA (для автоматизации)

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

Sub SplitTextByComma()

Dim rng As Range

Dim cell As Range

Dim arr() As String

Dim i As Integer

Set rng = Selection

For Each cell In rng

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

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

For i = LBound(arr) To UBound(arr)

cell.Offset(0, i).Value = Trim(arr(i))

Next i

End If

Next cell

End Sub

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

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

⚠️ Внимание: макросы могут содержать вирусы. Запускайте только код из проверенных источников и отключайте макросы в файлах от неизвестных отправителей (ФайлПараметрыЦентр управления безопасностью).

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

Выбор способа зависит от версии Excel, объёма данных и сложности задачи. Ниже таблица с сравнением:

МетодПодходит для версийПлюсыМинусыКогда использовать
Текст по столбцамВсе версииБыстро, без формулСтатический результатРазовые задачи с простыми разделителями
ЛЕВСИМВ/ПСТРВсе версииПростота, динамическое обновлениеТолько фиксированные позицииИзвлечение подстрок по номерам символов
ТЕКСТ.РАСПExcel 2019, 365Гибкость, регулярные выраженияНет в старых версияхСложные разделители, динамические данные
Power QueryExcel 2016 и новееОбработка больших объёмовТребует изучение интерфейсаТысячи строк, повторяющиеся задачи
VBAВсе версииМаксимальная автоматизацияРиски безопасностиСложные шаблоны, повторяющиеся операции

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

FAQ: Частые вопросы

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

Используйте функцию СЖПРОБЕЛЫ, чтобы сначала убрать лишние пробелы: =ТЕКСТ.РАСП(СЖПРОБЕЛЫ(A1);" "). Или в Power Query выберите опцию Сжать пробелы при разделении столбца.

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

Да. В ТЕКСТ.РАСП укажите массив разделителей: =ТЕКСТ.РАСП(A1;{",";";"-"}). В Power Query выберите Несколько разделителей и перечислите их через запятую.

Как разделить текст по переносу строки?

Используйте символ СИМВОЛ(10) (для Windows) или СИМВОЛ(13) (для Mac): =ТЕКСТ.РАСП(A1;СИМВОЛ(10)). В Power Query выберите разделитель Перевод строки.

Почему после разделения появляются пустые ячейки?

Это происходит, если в тексте есть несколько разделителей подряд (например, две запятые) или разделитель в начале/конце строки. В ТЕКСТ.РАСП добавьте аргумент ИСТИНА: =ТЕКСТ.РАСП(A1;",";;;ИСТИНА) — это уберёт пустые значения.

Как разделить текст в Google Таблицах?

В Google Sheets используйте функцию =SPLIT(A1;",") (аналог ТЕКСТ.РАСП). Также есть инструмент ДанныеРазделить текст на столбцы.