Если в ячейке Excel хранится текст типа ЯблокиКрасныеСладкие или Москва, ул.Ленина, д.15, а вам нужно получить каждое слово в отдельной колонке, стандартный инструмент Текст по столбцам не справится — он делит только по фиксированным разделителям. Проблема в том, что Excel по умолчанию не распознаёт границы слов без пробелов или когда разделители нестандартные (запятые внутри адресов, тире в ФИО).
В 80% случаев пользователи пытаются разделить текст через меню Данные → Текст по столбцам, но получают ошибку или некорректный результат. Причина — отсутствие универсального разделителя. Например, в строке ИвановИванИванович нет пробелов, а в г.Москва,ул.Тверская,12 запятые являются частью адреса. Для таких задач требуются специальные формулы, Power Query или даже VBA-макросы, если данных тысячи строк.
Далее разберём 7 рабочих методов — от элементарных функций до автоматизированных решений для массовой обработки. Все примеры протестированы в Excel 2010–2023 и Microsoft 365, с учётом особенностей русскоязычных текстов (кириллица, знаки препинания).
1. Разделение по фиксированному разделителю (пробел, запятая, точка с запятой)
Самый быстрый способ — когда слова в ячейке уже разделены однотипным символом (пробел, запятая, точка с запятой). Подходит для 90% стандартных случаев, например: Москва, ул. Ленина, 10 или Яблоки;Груши;Бананы.
Алгоритм:
- Выделите столбец с данными.
- Перейдите в меню
Данные → Текст по столбцам. - Выберите
С разделителями→ нажмитеДалее. - Укажите нужный разделитель (например, запятую или пробел) и снимите галочки с остальных.
- Нажмите
Готово.
⚠️ Внимание: Если в тексте есть двойные пробелы или несколько запятых подряд, Excel создаст пустые столбцы. Чтобы их убрать, после разделения примените фильтр и удалите строки с пустыми значениями.
| Исходный текст | Разделитель | Результат (столбец 1) | Результат (столбец 2) |
|---|---|---|---|
Москва, ул. Ленина |
Запятая | Москва |
ул. Ленина |
Яблоки;Груши;Бананы |
Точка с запятой | Яблоки |
Груши |
Иванов И.И. |
Пробел | Иванов |
И.И. |
2. Разделение текста без разделителей (слитные слова)
Когда слова в ячейке слиты в одно (ИвановИванИванович или МоскваулТверская), стандартный инструмент Текст по столбцам бесполезен. Здесь помогут формулы с регулярными выражениями или VBA.
Для ручного разделения небольшого объёма данных используйте функцию ПСТР с ручным указанием позиций:
=ПСТР(A1;1;6) // Извлекает первые 6 символов ("Иванов")
=ПСТР(A1;7;4) // Следующие 4 символа ("Иван")
=ПСТР(A1;11;9) // Оставшиеся ("Иванович")
Для автоматизации подходит формула с НАЙТИ и ПОИСК, но она требует знания шаблона. Например, чтобы разделить ФИО вида ИвановИванИванович:
=ЛЕВСИМВ(A1;НАЙТИ("Иван";A1)-1) // Фамилия
=ПСТР(A1;НАЙТИ("Иван";A1);4) // Имя
=ПРАВСИМВ(A1;9) // Отчество
Как разделить слитный текст с неизвестной структурой
Для полностью неструктурированных данных (например, МоскваулТверскаядом12) придётся использовать VBA-скрипт с регулярными выражениями. Пример макроса, который вставляет пробел перед каждой заглавной буквой (кроме первой):
Sub SplitByUpperCase()
Dim rng As Range, cell As Range
Set rng = Selection
For Each cell In rng
cell.Value = VBA.StrConv(cell.Value, vbProperCase)
cell.Value = VBA.Replace(cell.Value, " ", "")
cell.Value = VBA.RegExpReplace(cell.Value, "([A-ZА-Я])", " $1")
Next cell
End Sub
Примечание: Требует подключения библиотеки Microsoft VBScript Regular Expressions.!3. Использование функции ТЕКСТ.ПОСЛЕ и ТЕКСТ.ДО (Excel 365 и 2021)
В новых версиях Excel (2021 и Microsoft 365) появились функции ТЕКСТ.ПОСЛЕ и ТЕКСТ.ДО, которые упрощают извлечение частей текста по разделителю. Например, чтобы разделить строку Москва, ул. Ленина, 10:
=ТЕКСТ.ДО(A1;",";1) // "Москва"
=ТЕКСТ.ПОСЛЕ(A1;",";1) // " ул. Ленина, 10"
Для извлечения второго слова (между первой и второй запятой):
=ТЕКСТ.ПОСЛЕ(ТЕКСТ.ДО(A1;",";2);",";1)
⚠️ Внимание: Эти функции не работают в Excel 2019 и более ранних версиях. Для старых версий используйте комбинацию ЛЕВСИМВ, ПРАВСИМВ и ПОИСК.
🔹 Убедитесь, что у вас Excel 2021 или Microsoft 365 (проверьте в Файл → Учётная запись)
🔹 Проверьте, что разделитель однотипный (например, только запятые, без точек с запятой)
🔹 Если разделителей несколько подряд (например, Москва,, ул. Ленина), функция вернёт пустую строку
-->
4. Разделение с помощью Power Query (для больших данных)
Если нужно разделить тысячи строк с одинаковой структурой (например, адреса или ФИО), Power Query справится быстрее формул. Инструкция:
- Выделите данные →
Данные → Из таблицы/диапазона(в Excel 2016+). - В открывшемся редакторе Power Query выделите столбец →
Преобразовать → Разделить столбец → По разделителю. - Укажите разделитель (пробел, запятая и т. д.) и настройте параметры.
- Нажмите
Закрыть и загрузить.
Преимущества метода:
- 🔹 Обрабатывает миллионы строк без тормозов.
- 🔹 Сохраняет связь с исходными данными (обновляется автоматически).
- 🔹 Позволяет объединять данные обратно после редактирования.
Недостатки:
- 🔸 Требует Excel 2016 или новее.
- 🔸 Для сложных разделителей (например, "ул. ") придётся использовать
Заменить значенияперед разделением.
Текст по столбцам|Формулы (ЛЕВСИМВ, ПОИСК)|Power Query|VBA-макросы-->
5. VBA-макрос для разделения по заглавным буквам или шаблону
Когда слова в ячейке слиты, но начинаются с заглавной буквы (например, МоскваУлицаТверская), поможет этот макрос:
Sub SplitByCapitalLetters()
Dim rng As Range, cell As Range, i As Integer, newStr As String
Set rng = Selection
For Each cell In rng
newStr = VBA.LCase(cell.Value)
For i = 2 To Len(cell.Value)
If Asc(Mid(cell.Value, i, 1)) >= -1072 And Asc(Mid(cell.Value, i, 1)) <= -1041 Then
newStr = VBA.Left(newStr, i - 1) & " " & VBA.Mid(newStr, i)
End If
Next i
cell.Offset(0, 1).Value = newStr
Next cell
End Sub
Как использовать:
- Нажмите
Alt + F11, чтобы открыть редактор VBA. - Вставьте код в новый модуль (
Insert → Module). - Выделите ячейки с данными и запустите макрос (
F5). - Результат появится в соседнем столбце.
⚠️ Внимание: Макрос работает только с кириллицей. Для латиницы замените диапазон -1072 и -1041 на 65 и 90 (коды ASCII для A–Z).
6. Разделение по регулярным выражениям (для сложных шаблонов)
Если текст имеет нестандартную структуру (например, 123-45-67 или IVANOV_I_I), используйте регулярные выражения через VBA. Пример для разделения по символу подчёркивания (_):
Function SplitByPattern(input As String, pattern As String) As String()
Dim regex As Object, matches As Object
Set regex = CreateObject("VBScript.RegExp")
regex.Pattern = pattern
regex.Global = True
SplitByPattern = regex.Split(input)
End Function
Чтобы применить функцию:
- Вставьте код в модуль VBA.
- В ячейке используйте формулу массива (нажмите
Ctrl+Shift+Enter):
=ТРАНСП(SplitByPattern(A1;"_"))
Примеры шаблонов для регулярных выражений:
- 🔹
[A-ZА-Я]— заглавные буквы (для разделения camelCase). - 🔹
\d+— числа (например, дляТовар123). - 🔹
[-\s]— дефисы или пробелы.
7. Разделение адресов и ФИО с учётом русскоязычных особенностей
Русскоязычные тексты (адреса, ФИО) часто содержат сочетания букв и цифр (например, г. Москва, ул. Ленина, д. 15, кв. 42). Для их разделения:
Способ 1. Пошаговая замена разделителей:
- Замените
г.→г.|(через=ЗАМЕНИТЬ). - Замените
,→|. - Запустите
Текст по столбцамс разделителем|.
Способ 2. Формулы для извлечения частей адреса:
=ЕСЛИОШИБКА(ЛЕВСИМВ(A1;ПОИСК("г.";A1)+2);"") // Город
=ЕСЛИОШИБКА(ПСТР(A1;ПОИСК("ул.";A1);ПОИСК(",";A1;ПОИСК("ул.";A1))-ПОИСК("ул.";A1));"") // Улица
| Исходный адрес | Формула для города | Формула для улицы | Формула для дома |
|---|---|---|---|
г. Москва, ул. Ленина, д. 15 |
=ЛЕВСИМВ(A1;ПОИСК(",";A1)-1) |
=ПСТР(A1;ПОИСК("ул.";A1);ПОИСК(",";A1;ПОИСК("ул.";A1))-ПОИСК("ул.";A1)) |
=ПРАВСИМВ(A1;ПОИСК("д.";A1)-1) |
Санкт-Петербург, Невский пр., 1 |
=ЛЕВСИМВ(A1;ПОИСК(",";A1)-1) |
=ПСТР(A1;ПОИСК(",";A1)+2;ПОИСК(",";A1;ПОИСК(",";A1)+1)-ПОИСК(",";A1)-2) |
=ПРАВСИМВ(A1;ЛЕН(A1)-ПОИСК(",";A1;ПОИСК(",";A1)+1)) |
Частые ошибки и как их избежать
Ошибка 1: Пустые столбцы после разделения.
Причина: В тексте есть двойные разделители (например, Москва,, ул. Ленина). Решение: перед разделением замените ,, на , через =ЗАМЕНИТЬ(A1;",,";",").
Ошибка 2: Текст не разделяется.
Причина: Выбран неверный разделитель (например, табуляция вместо запятой). Решение: проверьте исходный текст через =КОДСИМВ(ПСТР(A1;1;1)) — он покажет код первого символа.
Ошибка 3: Кириллица отображается кракозябрами.
Причина: Несовместимость кодировок при импорте данных. Решение: сохраните файл в формате .xlsx (не .csv) или используйте Power Query с указанием кодировки 1251.
Как проверить кодировку текста в Excel
Вставьте в модуль VBA этот код и запустите макрос:
Sub CheckEncoding()
Dim cell As Range
For Each cell In Selection
Debug.Print "Text: " & cell.Value & " | First char code: " & Asc(Left(cell.Value, 1))
Next cell
End Sub
В окне Immediate Window (Ctrl+G) появятся коды символов. Для кириллицы первые символы должны быть в диапазоне -1072...-1041 (или 1040...1103 для Unicode).
FAQ: Ответы на частые вопросы
Можно ли разделить текст на слова без пробелов автоматически?
Да, но только с помощью VBA-макросов или Power Query. Стандартные функции Excel не умеют распознавать границы слов без явных разделителей. Для русского языка подойдёт макрос из раздела 5, который вставляет пробелы перед заглавными буквами.
Почему после разделения некоторые слова попадают не в те столбцы?
Это происходит, если в тексте неоднородные разделители (например, то запятая, то точка с запятой). Решение:
- Приведите все разделители к одному виду через
=ЗАМЕНИТЬ. - Используйте
Power Queryс несколькими этапами разделения.
Как разделить текст на слова в Excel Online?
В Excel Online доступны только базовые функции: Текст по столбцам и формулы (ЛЕВСИМВ, ПОИСК). Power Query и VBA недоступны. Для сложных задач скачайте файл в десктопную версию Excel.
Можно ли разделить текст на слова с учётом знаков препинания (точки, запятые внутри слов)?
Да, но потребуется предварительная обработка:
- Замените "ненужные" знаки препинания на временный символ (например,
=ЗАМЕНИТЬ(A1;",";"|")). - Разделите текст по временному символу.
- Верните знаки препинания обратно через
=ЗАМЕНИТЬ.
Для адресов (например, г. Москва, ул. Ленина) используйте формулы из раздела 7.
Как разделить текст на слова в Google Таблицах?
В Google Sheets используйте:
- 🔹
=SPLIT(A1;",")— для разделения по запятой. - 🔹
=REGEXEXTRACT(A1;"([^,]+)")— для извлечения первого слова. - 🔹
=ARRAYFORMULA(SPLIT(A1:A10;","))— для массовой обработки.
Для слитного текста (например, ИвановИван) используйте скрипты Google Apps Script.