Как убрать двойные пробелы в Excel: от функции TRIM до VBA

Двойные (и более) пробелы в ячейках Excel — распространённая проблема, которая мешает анализу данных, сортировке и даже простым вычислениям. Лишние пробелы появляются при импорте данных из внешних источников, копировании текста с веб-страниц или после неаккуратного редактирования. В результате формулы СЧЁТЕСЛИ или ПОИСКПОЗ работают неправильно, а сводные таблицы группируют одинаковые значения как разные.

В этой статье мы разберём 5 способов заменить два пробела на один — от стандартной функции СЖПРОБЕЛЫ (TRIM) до автоматизации через Power Query и VBA. Каждый метод подходит для разных сценариев: одни удобны для разовых задач, другие — для обработки тысяч строк. Вы узнаете, как избежать типичных ошибок (например, когда TRIM не удаляет неразрывные пробелы) и как адаптировать решения под Excel 2010, 2019 или Microsoft 365.

1. Функция СЖПРОБЕЛЫ (TRIM): простой, но не универсальный способ

Функция СЖПРОБЕЛЫ (англ. TRIM) — первое, что приходит в голову при удалении лишних пробелов. Она убирает все пробелы, кроме одиночных между словами, а также удаляет пробелы в начале и конце ячейки. Синтаксис простой:

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

Например, если в ячейке A1 содержится текст " Привет мир ", после применения СЖПРОБЕЛЫ останется "Привет мир".

  • Плюсы: не требует дополнительных инструментов, работает во всех версиях Excel.
  • Минусы: не удаляет неразрывные пробелы (вставляются через Ctrl+Shift+Пробел), а также табуляции и переносы строк.

Если после СЖПРОБЕЛЫ пробелы остаются, проверьте текст на наличие непечатаемых символов. Для этого используйте функцию ПЕЧСИМВ (CLEAN), которая удаляет недопустимые символы:

=СЖПРОБЕЛЫ(ПЕЧСИМВ(A1))
📊 Как часто вы сталкиваетесь с лишними пробелами в Excel?
Каждый день
Раз в неделю
Редко
Никогда

2. Замена через "Найти и заменить": быстро и без формул

Если нужно очистить весь лист или диапазон, а не отдельные ячейки, удобнее использовать инструмент Найти и заменить (Ctrl+H). Этот метод работает даже с неразрывными пробелами и табуляциями.

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

  1. Выделите диапазон ячеек (или весь лист — Ctrl+A).
  2. Нажмите Ctrl+H, чтобы открыть окно Заменить.
  3. В поле Найти введите два пробела (нажмите пробел дважды).
  4. В поле Заменить на введите один пробел.
  5. Нажмите Заменить всё.

Если в данных есть неразрывные пробелы, повторите процедуру, но в поле Найти вставьте символ неразрывного пробела (скопируйте его из ячейки или введите через Alt+0160 на цифровой клавиатуре).

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

-->

⚠️ Внимание: Если в тексте есть осмысленные двойные пробелы (например, в инициалах "И. И. Иванов"), этот метод удалит их. Перед заменой проверьте данные на наличие таких случаев.

3. Power Query: обработка больших объёмов данных

Для обработки тысяч строк или регулярного импорта данных удобнее использовать Power Query (доступен в Excel 2016+ и Office 365). Этот инструмент позволяет очищать пробелы при загрузке данных из внешних источников (например, CSV или SQL).

Алгоритм действий:

  1. Выделите исходные данные и нажмите Данные → Из таблицы/диапазона (или Get & Transform → From Table/Range в англоязычной версии).
  2. В открывшемся окне Power Query выделите столбец с текстом.
  3. Перейдите на вкладку Преобразование (Transform) и выберите Формат → Очистить → Обрезать (Format → Clean → Trim).
  4. Чтобы заменить двойные пробелы, добавьте пользовательский столбец с формулой:
    = Text.Replace([YourColumn], "  ", " ")

    (замените YourColumn на имя вашего столбца).

  5. Нажмите Закрыть и загрузить, чтобы вернуть данные в Excel.

Power Query сохраняет шаги очистки, поэтому при следующем импорте данных пробелы будут удаляться автоматически.

Метод Подходит для Удаляет неразрывные пробелы Автоматизация
СЖПРОБЕЛЫ Единичные ячейки ❌ Нет ❌ Нет
Найти и заменить Весь лист/диапазон ✅ Да (при ручном вводе) ❌ Нет
Power Query Большие наборы данных ✅ Да ✅ Да
VBA Сложные сценарии ✅ Да ✅ Да

4. Макрос VBA: автоматизация для продвинутых пользователей

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

Sub ReplaceDoubleSpaces()

Dim ws As Worksheet

Dim rng As Range

Dim cell As Range

Set ws = ActiveSheet

Set rng = ws.UsedRange

For Each cell In rng

If cell.HasFormula = False Then 'Пропускаем ячейки с формулами

cell.Value = Replace(cell.Value, " ", " ")

'Удаляем неразрывные пробелы (Char 160)

cell.Value = Replace(cell.Value, Chr(160), " ")

'Обрезаем пробелы в начале и конце

cell.Value = Trim(cell.Value)

End If

Next cell

End Sub

Чтобы использовать этот макрос:

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

Критичный нюанс: макрос изменяет исходные данные без возможности отмены (Ctrl+Z). Перед запуском сохраните резервную копию файла!

5. Комбинация функций: для сложных случаев

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

=СЖПРОБЕЛЫ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(A1;СИМВОЛ(160);" ");СИМВОЛ(9);" ");"  ":" "))

Расшифровка формулы:

  • СИМВОЛ(160) — неразрывный пробел.
  • СИМВОЛ(9) — табуляция.
  • ПОДСТАВИТЬ заменяет все вхождения на обычный пробел.
  • СЖПРОБЕЛЫ убирает лишние пробелы после замены.

Если в данных есть многократные пробелы (три и более), примените формулу несколько раз или используйте рекурсивный подход (в Excel 365 с динамическими массивами):

=СЖПРОБЕЛЫ(ПОДСТАВИТЬ(A1;"  ";" "))

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

Как проверить тип пробелов в ячейке?

Чтобы увидеть все непечатаемые символы, используйте функцию =КОДСИМВ(СРЕД(A1;1;1)) для первого символа ячейки. Неразрывный пробел вернёт код 160, обычный пробел — 32, табуляция — 9.

6. Проблемы и решения: почему пробелы не удаляются?

Иногда даже после применения всех методов пробелы остаются. Рассмотрим типичные причины и способы их устранения:

  • 🔹 Неразрывные пробелы: как упоминалось ранее, СЖПРОБЕЛЫ их не удаляет. Используйте ПОДСТАВИТЬ с СИМВОЛ(160).
  • 🔹 Пробелы в формулах: если ячейка содержит формулу (например, =A1&B1), пробелы внутри неё не будут обработаны. Примените функцию очистки к результату формулы, а не к самой формуле.
  • 🔹 Скрытые символы: в данных могут быть символы переноса строк (СИМВОЛ(10)) или другие невидимые знаки. Используйте ПЕЧСИМВ для их удаления.
  • 🔹 Защищённые ячейки: если лист или ячейки защищены, функции и макросы не смогут их изменить. Снимите защиту через Рецензирование → Снять защиту листа.
⚠️ Внимание: Если вы импортируете данные из PDF или веб-страниц, пробелы могут быть представлены как HTML-теги ( ). В этом случае используйте ПОДСТАВИТЬ для замены   на обычный пробел.

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

Можно ли удалить пробелы только в начале и конце ячейки, не трогая пробелы между словами?

Да, для этого достаточно использовать функцию СЖПРОБЕЛЫ (TRIM). Она удаляет только ведущие и завершающие пробелы, оставляя одиночные пробелы между словами. Например:

=СЖПРОБЕЛЫ("  Привет мир  ")

вернёт "Привет мир".

Почему после применения СЖПРОБЕЛЫ в ячейке остаются двойные пробелы?

Скорее всего, в тексте используются неразрывные пробелы (код 160). Функция СЖПРОБЕЛЫ их не распознаёт. Решение:

  1. Используйте ПОДСТАВИТЬ для замены:
    =ПОДСТАВИТЬ(СЖПРОБЕЛЫ(A1);СИМВОЛ(160);" ")
  2. Или замените вручную через Ctrl+H, вставив в поле Найти символ неразрывного пробела (скопируйте его из ячейки).
Как автоматически очищать пробелы при импорте данных из CSV?

Используйте Power Query:

  1. При импорте CSV выберите Преобразовать данные (Transform Data).
  2. В Power Query выделите текстовые столбцы и примените Формат → Очистить → Обрезать.
  3. Добавьте пользовательский столбец с формулой = Text.Replace([Column1], " ", " ").
  4. Сохраните запрос — при следующем импорте пробелы будут очищаться автоматически.

Альтернатива: настройте макрос VBA, который будет запускаться при открытии файла (используйте событие Workbook_Open).

Можно ли удалить все пробелы в ячейке, включая пробелы между словами?

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

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

Эта формула заменит все пробелы (включая одиночные) на пустую строку. Например, "Привет мир" станет "Приветмир".

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

=ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(A1;" ";"");СИМВОЛ(160);"");СИМВОЛ(9);"")
Как удалить пробелы в выпадающем списке (валидация данных)?

Пробелы в выпадающих списках (Проверка данных) удаляются теми же методами, но с нюансами:

  1. Если список основан на диапазоне ячеек, сначала очистите пробелы в источнике данных (например, на отдельном листе).
  2. Если список жёстко прописан в правилах проверки (например, "Да;Нет;Не знаю"), измените правило через Данные → Проверка данных и вручную удалите пробелы в списке значений.
  3. Для динамических списков (с использованием ДВССЫЛ) очищайте пробелы в исходном диапазоне.

Важно: после очистки пробелов в источнике обновите правила проверки данных (Данные → Проверка данных → Изменить).