Разбивка текста на отдельные ячейки в Microsoft Excel — одна из самых востребованных операций при работе с данными. Представьте: у вас есть столбец с полными ФИО, адресами или кодами товаров, где вся информация склеена в одну строку. Вручную копировать каждое слово в отдельную ячейку — неэффективно, особенно если строк тысячи. К счастью, в Excel есть как минимум 5 способов автоматизировать этот процесс: от простых функций до продвинутых инструментов вроде Power Query.
В этой статье мы разберём каждый метод с практическими примерами — от базовых формул ЛЕВСИМВ/ПРАВСИМВ до универсальной функции ТЕКСТ.РАСП (доступной с Excel 2019 и Microsoft 365). Вы узнаете, как разделить текст по запятой, пробелу, тире или любому другому разделителю, а также обработать нестандартные форматы — например, когда данные разделены несколькими символами или содержат лишние пробелы. В конце статьи — сравнительная таблица методов и ответы на частые вопросы.
1. Способ: Функция «Текст по столбцам» (без формул)
Самый простой способ разделить текст — использовать встроенный инструмент «Текст по столбцам». Он не требует знания формул и работает даже в старых версиях Excel (начиная с Excel 2003). Подходит для данных с чёткими разделителями: запятыми, точками с запятой, табуляцией или пробелами.
Как это сделать:
- 📌 Выделите ячейки с текстом, который нужно разделить.
- 🔧 Перейдите на вкладку
Данные→Текст по столбцам. - 🔄 В первом окне выберите
С разделителями(если текст разбит символами) илиФиксированная ширина(если данные выровнены по столбцам). - ✅ Нажмите
Готово— Excel автоматически разобьёт текст по соседним ячейкам.
Преимущество метода: мгновенный результат без формул. Недостаток — если исходные данные изменятся, придётся повторять процедуру заново. Для динамического обновления лучше использовать формулы (см. следующие разделы).
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 и новее. Он идеален для разделения текста в больших таблицах (тысячи строк), так как:
- 🔄 Обрабатывает данные без формул (не нагружает файл).
- 🔄 Позволяет сохранять шаги и обновлять результат при изменении исходных данных.
- 🔄 Умеет разбивать текст по нескольким разделителям одновременно.
Пошаговая инструкция:
- Выделите исходные данные и нажмите
Данные→Из таблицы/диапазона(в группеПолучить и преобразовать данные). - В открывшемся окне Power Query выберите столбец с текстом →
Преобразовать→Разделить столбец→По разделителю. - Укажите символ-разделитель (запятая, пробел и т.д.) и нажмите
ОК. - Нажмите
Закрыть и загрузить— данные разделятся в новые столбцы.
Выделить исходный диапазон|Проверить, нет ли объединённых ячеек|Удалить лишние пробелы функцией СЖПРОБЕЛЫ|Сохранить файл перед началом работы-->
Предупреждение: если в тексте есть неоднородные разделители (например, то запятая, то точка с запятой), предварительно замените их на один символ через НАЙТИ/ЗАМЕНИТЬ.
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
Как использовать:
- Нажмите
Alt + F11, чтобы открыть редактор VBA. - Вставьте код в новый модуль (
Insert→Module). - Выделите ячейки с текстом и запустите макрос (
F5).
⚠️ Внимание: макросы могут содержать вирусы. Запускайте только код из проверенных источников и отключайте макросы в файлах от неизвестных отправителей (Файл → Параметры → Центр управления безопасностью).
Сравнение методов: какой выбрать?
Выбор способа зависит от версии Excel, объёма данных и сложности задачи. Ниже таблица с сравнением:
| Метод | Подходит для версий | Плюсы | Минусы | Когда использовать |
|---|---|---|---|---|
Текст по столбцам | Все версии | Быстро, без формул | Статический результат | Разовые задачи с простыми разделителями |
ЛЕВСИМВ/ПСТР | Все версии | Простота, динамическое обновление | Только фиксированные позиции | Извлечение подстрок по номерам символов |
ТЕКСТ.РАСП | Excel 2019, 365 | Гибкость, регулярные выражения | Нет в старых версиях | Сложные разделители, динамические данные |
| Power Query | Excel 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;",") (аналог ТЕКСТ.РАСП). Также есть инструмент Данные → Разделить текст на столбцы.