Как автоматически добавить пробелы между словами в Excel: от простых формул до VBA

Работаете с данными, где фамилии, адреса или названия слиты в одно слово? Например, вместо "ИвановИванИванович" у вас "ИвановИванИванович", а вместо "МоскваулЛенина15""МоскваулЛенина15"? Вручную исправлять сотни строк — мучение. К счастью, в Microsoft Excel есть минимум 5 способов автоматически добавить пробелы между словами, буквами или символами. Некоторые методы работают даже для сложных случаев, когда нужно разделить текст по заглавным буквам, изменению регистра или шаблонным разделителям.

В этой статье вы найдёте решения для всех версий Excel (2010–2023, включая Microsoft 365), от простых формул до Power Query и VBA-макросов. Мы разберём реальные примеры: как разделить ФИО, адреса, артикулы и другие данные. А ещё покажем, как избежать типичных ошибок, когда Excel "не видит" слова или добавляет пробелы в неправильных местах.

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

1. Разделение по заглавным буквам (формула для ФИО, адресов, CamelCase)

Самый распространённый случай — когда слова в тексте слиты, но каждое новое слово начинается с заглавной буквы. Например: ИвановИванИванович, МоскваУлЛенинаДом15 или iPhone13ProMax. Здесь поможет комбинация функций СИМВОЛ, КОДСИМВ и ПОДСТАВИТЬ.

Идея метода: пройтись по каждому символу в строке и вставить пробел перед каждой заглавной буквой (кроме первой). Формула выглядит громоздко, но работает безотказно:

=ПОДСТАВИТЬ(СЦЕПИТЬ(ЕСЛИ(И(КОДСИМВ(ПСТР(A1;СТРОКА(ДВССЫЛ("1:"&ДЛСТР(A1)));1))<65;КОДСИМВ(ПСТР(A1;СТРОКА(ДВССЫЛ("1:"&ДЛСТР(A1)));1))>90);"";" ");ПСТР(A1;СТРОКА(ДВССЫЛ("1:"&ДЛСТР(A1)));1)));"  ";" ")

Разберём на примере ячейки A1 со значением МоскваУлЛенинаДом15:

  1. Функция ПСТР извлекает каждый символ по очереди.
  2. КОДСИМВ проверяет, является ли символ заглавной буквой (коды 65–90 для английского, 192–223 для русского).
  3. ЕСЛИ добавляет пробел перед заглавной буквой (кроме первой).
  4. ПОДСТАВИТЬ убирает двойные пробелы, если они появились.

Важно: Эта формула работает только для текста, где слова действительно начинаются с заглавной буквы. Если в строке есть цифры или строчные буквы в середине (например, iPadPro2023), пробелы могут встать некорректно.

📊 Какой у вас Excel?
Microsoft 365 (онлайн/десктоп)
Excel 2019
Excel 2016
Excel 2010-2013
Другой

2. Использование функции ТЕКСТ.ПОСЛЕ и ТЕКСТ.ДО (Excel 365 и 2021)

Если у вас Excel 365 или Excel 2021, вам повезло: в этих версиях есть суперполезные функции ТЕКСТ.ПОСЛЕ и ТЕКСТ.ДО, которые упрощают работу с текстом. Например, если у вас в ячейке слитный адрес вида МоскваулЛенинадом15кв45, и вы знаете, что после слова "ул" всегда идёт название улицы, можно извлечь части текста по шаблону.

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

=ТЕКСТ.ПОСЛЕ(ТЕКСТ.ПОСЛЕ(A1;"ул");1)

А чтобы разделить весь адрес на компоненты, комбинируем несколько функций:

=ТЕКСТ.ДО(A1;"ул") & " ул. " & ТЕКСТ.ПОСЛЕ(ТЕКСТ.ПОСЛЕ(A1;"ул");1)

Преимущество этого метода:

  • 🔹 Работает с любыми разделителями (не только пробелами).
  • 🔹 Можно использовать несколько условий подряд (например, сначала найти "ул", потом "дом").
  • 🔹 Не требует VBA или Power Query.

Ограничение: функции ТЕКСТ.ПОСЛЕ/ТЕКСТ.ДО доступны только в новых версиях Excel. Для старых версий (2010–2019) используйте методы из следующих разделов.

3. Power Query: автоматическое разделение текста по шаблонам

Power Query (или Get & Transform в новых версиях) — это инструмент для продвинутой обработки данных. Он идеален, когда нужно разделить пробелами тысячи строк по сложным правилам. Например, если у вас есть столбец с данными вида ИвановИванИванович19850315, и вы хотите разделить ФИО и дату рождения.

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

  1. Выделите ваш диапазон данных и перейдите на вкладку Данные → Получение данных → Из таблицы/диапазона.
  2. В открывшемся окне Power Query выделите столбец с текстом.
  3. Перейдите на вкладку Преобразовать → Разделить столбец → По позициям или По разделителю.
  4. Для разделения по заглавным буквам используйте Добавить пользовательский столбец с формулой на языке M:
    = Text.Combine(List.Transform(Text.ToList([Column1]), each if Text.Upper(each) = each and Text.Lower(each) <> each then " " & each else each), "")
  5. Нажмите Закрыть и загрузить, чтобы вернуть данные в Excel.

Пример работы Power Query для строки МоскваУлЛенинаДом15Кв45:

Исходный текстФормула MРезультат
МоскваУлЛенинаДом15Кв45Text.Combine(List.Transform(...))Москва Ул Ленина Дом15 Кв45
ИвановИванИвановичТот же кодИванов Иван Иванович
iPhone13ProMax256GBДополнительно: Text.Replace(..., "GB", " GB")iPhone 13 Pro Max 256 GB

Power Query сохраняет все шаги преобразования. Если исходные данные обновятся, достаточно кликнуть "Обновить" — и все пробелы встанут автоматически.

Убедитесь, что текст в одном столбце|Проверьте отсутствие пустых ячеек|Сохраните файл перед началом работы|Запомните названия столбцов (они понадобятся в формулах)

-->

4. VBA-макрос для сложных случаев (регулярные выражения)

Если предыдущие методы не справились (например, когда пробелы нужно вставить по нестандартным правилам), приходит на помощь VBA с регулярными выражениями. Этот способ требует минимальных знаний программирования, но даёт максимальную гибкость.

Пример макроса, который добавляет пробел перед каждой заглавной буквой (кроме первой) и перед цифрами:

Sub AddSpacesToText()

Dim rng As Range

Dim cell As Range

Dim regex As Object

Set regex = CreateObject("VBScript.RegExp")

' Настраиваем регулярное выражение

With regex

.Pattern = "([a-zА-я])([A-ZА-Я0-9])|([A-ZА-Я0-9])([a-zА-я])"

.Global = True

End With

' Применяем к выделенным ячейкам

For Each cell In Selection

If cell.Value <> "" Then

cell.Value = regex.Replace(cell.Value, "$1$3 $2$4")

End If

Next cell

End Sub

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

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

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

  • 🔹 Работает с любыми шаблонами (можно настроить под конкретный формат данных).
  • 🔹 Обрабатывает тысячи строк за секунды.
  • 🔹 Можно сохранить макрос и использовать повторно.
⚠️ Внимание: Перед запуском макроса сохраните файл в формате .xlsm (с поддержкой макросов). Если вы работаете с конфиденциальными данными, проверьте код на тестовых данных — регулярные выражения могут неожиданно изменить текст.

5. Разделение текста по фиксированным позициям (функция ПСТР)

Если ваш текст имеет строгую структуру (например, первые 6 символов — фамилия, следующие 3 — инициалы), можно вручную указать позиции для пробелов. Этот метод подходит для артикулов, серийных номеров или кодов, где формат всегда одинаковый.

Пример: в ячейке A1 лежит текст ABC123DEF456, и нужно добавить пробелы после 3-го и 6-го символов. Формула:

=ПСТР(A1;1;3) & " " & ПСТР(A1;4;3) & " " & ПСТР(A1;7;3)

Для более гибкого решения используйте комбинацию ПСТР с НАЙТИ, если позиции разделителей зависят от содержимого. Например, чтобы разделить текст вида ИвановИванИванович19850315 на ФИО и дату рождения:

=ЛЕВСИМВ(A1;НАЙТИ(ЦЕЛОЕ(A1);A1)-1) & " " & ПРАВСИМВ(A1;8)

Этот метод требует точного знания структуры данных, но зато работает мгновенно и не зависит от версий Excel.

Как найти позицию первого числа в тексте?

Используйте формулу массива (вводится с Ctrl+Shift+Enter в старых версиях Excel):

=МИН(ЕСЛИОШИБКА(НАЙТИ(СТРОКА(ДВССЫЛ("0:9"));A1);""))

Она вернёт позицию первой цифры в строке. Например, для текста Иванов1985 результат будет 7.

6. Онлайн-сервисы и надстройки для Excel

Если вам нужно разово обработать данные и не хочется разбираться в формулах, можно воспользоваться внешними инструментами:

  • 🔹 Ablebits Text Toolkit — надстройка для Excel с функцией Add Spaces (платно, но есть trial).
  • 🔹 Kutools for Excel — включает инструмент Split Cells с гибкими настройками.
  • 🔹 Онлайн-конвертеры (например, textfixer.com или convertcsv.com) — загружаете файл, получаете обработанный вариант.

Плюсы внешних сервисов:

  • 🔹 Не нужно писать код или формулы.
  • 🔹 Часто поддерживают сложные шаблоны (например, разделение по регулярным выражениям).

Минусы:

  • 🔸 Риск утечки данных (не используйте для конфиденциальной информации).
  • 🔸 Надстройки могут замедлять работу Excel.
⚠️ Внимание: Перед использованием онлайн-сервисов проверьте, не содержат ли ваши данные личную информацию (ФИО, адреса, номера документов). Многие сервисы сохраняют загруженные файлы на своих серверах.

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

Можно ли автоматически добавить пробелы между словами в Excel Online?

В Excel Online доступны только базовые текстовые функции (ПСТР, НАЙТИ, ЗАМЕНИТЬ). Методы с Power Query или VBA не работают. Для сложных задач скачайте файл в десктопную версию Excel.

Почему формула с КОДСИМВ не работает для кириллицы?

Функция КОДСИМВ возвращает коды символов в ANSI, а для кириллицы нужно использовать ЮНИКОДСИМВ (в новых версиях Excel) или корректировать диапазоны кодов. Например, заглавные русские буквы имеют коды 192–223, а не 65–90.

Как разделить текст, если слова написаны через дефис или подчёркивание?

Используйте функцию ПОДСТАВИТЬ:

=ПОДСТАВИТЬ(ПОДСТАВИТЬ(A1;"-";" ");"_";" ")

Для более сложных случаев (например, word1-word2_word3) комбинируйте с ТРИМ, чтобы убрать лишние пробелы:

=ТРИМ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(A1;"-";" ");"_";" "))

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

Да, при импорте через Power Query вы можете сразу применить преобразования. В окне импорта выберите столбец → Преобразовать → Разделить столбец → По разделителю и укажите нужные символы (или используйте пользовательскую функцию на языке M).

Как убрать лишние пробелы после автоматического разделения?

Используйте функцию ТРИМ (убирает пробелы в начале/конце) или СЖПРОБЕЛЫ (убирает все лишние пробелы, включая повторяющиеся):

=СЖПРОБЕЛЫ(A1)

В Excel 365 можно комбинировать с ТЕКСТ.СЦЕПИТЬ для более точной очистки.