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

Почему пробелы в числах — это проблема, и когда их нужно убирать

Вы когда-нибудь сталкивались с ситуацией, когда Excel вдруг перестаёт воспринимать числа как числа? Вместо суммирования ячеек получаете ошибку #ЗНАЧ!, а сортировка работает криво? В 90% случаев виноваты невидимые пробелы — лишние символы, которые пользователь случайно добавил при вводе данных или которые «подтянулись» при импорте из других систем. Например, при копировании числовых данных из , PDF-отчётов или веб-страниц.

Проблема усугубляется тем, что пробелы бывают разных типов: обычные (код 32), неразрывные (код 160), табуляции (9) или даже символы переноса. Excel их не показывает по умолчанию, но они ломают формулы, мешают преобразованию текста в числа и искажают результаты анализа. Особенно критично это для финансовых отчётов, где даже один лишний пробел в сумме может привести к ошибке на миллионы.

В этой статье мы разберём 5 способов очистки пробелов — от элементарных функций до автоматизации через VBA, а также научимся отличать «полезные» пробелы (например, в артикулах) от вредоносных. Вы узнаете, какой метод самый быстрый, а какой подходит для обработки тысяч строк без ручного труда.

📊 Как часто вы сталкиваетесь с лишними пробелами в Excel?
Постоянно, это моя головная боль
Иногда, при импорте данных
Рядом, но не мешают
Никогда не замечал проблемы

Способ 1: Функция СЖПРОБЕЛЫ — простое решение для большинства случаев

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

  • 🔹 Ведущие пробелы (в начале текста)
  • 🔹 Завершающие пробелы (в конце текста)
  • 🔹 Множественные пробелы между словами/цифрами (оставляет только один)

Пример использования:

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

Если в ячейке A1 было значение " 123 456 789 ", то после применения функции получится "123 456 789". Обратите внимание: пробел между группами цифр сохранится — функция не убирает все пробелы, а только лишние.

1. Введите тестовые данные с пробелами в ячейку A1

2. В ячейке B1 пропишите формулу =СЖПРОБЕЛЫ(A1)

3. Проверьте результат — пробелы в начале/конце должны исчезнуть

4. Скопируйте формулу на весь столбец (если нужно)-->

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

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

Способ 2: Комбинация ПОДСТАВИТЬ + СЖПРОБЕЛЫ для неразрывных пробелов

Неразрывные пробелы (вставляются через Ctrl+Shift+Space) — это «невидимые убийцы» данных. Они выглядят как обычные, но имеют другой код (160 вместо 32), поэтому СЖПРОБЕЛЫ их не удаляет. Чтобы избавиться от них, используйте двойную обработку:

  1. Сначала замените неразрывные пробелы на обычные:
    =ПОДСТАВИТЬ(A1;СИМВОЛ(160);" ")
  2. Затем примените СЖПРОБЕЛЫ к результату:
    =СЖПРОБЕЛЫ(ПОДСТАВИТЬ(A1;СИМВОЛ(160);" "))

Если не хотите вводить СИМВОЛ(160) вручную, скопируйте неразрывный пробел из этой строки: (выделите символ между кавычками и вставьте в формулу).

Исходные данные После ПОДСТАВИТЬ После СЖПРОБЕЛЫ
"123  456" (с неразрывными пробелами) "123 456" "123 456"
"  789  " " 789 " "789"

Этот метод универсален, но требует создания дополнительного столбца с формулами. Если вам нужно очистить данные на месте (без вспомогательных столбцов), переходите к способу 4 с использованием VBA.

Способ 3: Горячие клавиши Ctrl+H — замена пробелов вручную

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

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

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

Предупреждение: Этот метод удаляет все пробелы, включая полезные (например, в артикулах типа "AB-123 CD"). Если вам нужно сохранить пробелы между группами символов, используйте СЖПРОБЕЛЫ или VBA.

⚠️ Внимание: При замене неразрывных пробелов (СИМВОЛ(160)) через Ctrl+H Excel может не найти их, если в поле Найти введён обычный пробел. Всегда копируйте неразрывный пробел напрямую из источника!
Как вставить неразрывный пробел в поле "Найти"

1. Скопируйте символ из этой статьи: (выделите его между кавычками).

2. В окне Ctrl+H вставьте символ в поле Найти.

3. Убедитесь, что в поле Заменить на пусто.

4. Нажмите Заменить всё.

Способ 4: Макрос VBA для очистки пробелов в тысячах ячеек

Если вам нужно обработать десятки тысяч строк или очищать пробелы регулярно, ручные методы не подойдут. На помощь придёт VBA-макрос, который:

  • 🔹 Удаляет все типы пробелов (включая неразрывные и табуляции)
  • 🔹 Работает с выделенным диапазоном или всем листом
  • 🔹 Сохраняет пробелы внутри текста (если нужно)

Скопируйте этот код в редактор VBA (Alt+F11Insert → Module):

Sub CleanSpaces()

Dim rng As Range

Dim cell As Range

Set rng = Selection 'или укажите диапазон явно: Range("A1:A1000")

For Each cell In rng

If Not IsEmpty(cell) Then

cell.Value = Application.WorksheetFunction.Trim(Replace(Replace(cell.Value, Chr(160), " "), Chr(9), " "))

End If

Next cell

End Sub

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

  1. Выделите диапазон ячеек для очистки.
  2. Запустите макрос через Alt+F8 → выберите CleanSpacesВыполнить.
  3. Готово! Все лишние пробелы будут удалены за секунды.

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

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

Способ 5: Power Query — очистка пробелов при импорте данных

Если пробелы появляются при импорте данных из CSV, XML или баз данных, устранять их лучше на этапе загрузки с помощью Power Query (вкладка ДанныеПолучить данные). Этот метод гарантирует, что в Excel попадут уже «чистые» данные.

Инструкция:

  1. Импортируйте данные через Данные → Получить данные → Из файла/базы данных.
  2. В открывшемся окне Power Query выделите столбец с пробелами.
  3. Перейдите на вкладку ПреобразованиеФормат → Обрезка (удалит пробелы в начале/конце).
  4. Для удаления всех пробелов используйте Заменить значения (Ctrl+H в Power Query): в поле Значение для поиска введите пробел, в Замена оставьте пусто.
  5. Нажмите Закрыть и загрузить.

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

Ограничение: Power Query доступен только в Excel 2016 и новее (или в Excel 2010/2013 с надстройкой Power Query).

Как отличить «плохие» пробелы от «хороших»

Не все пробелы в данных вредны. Например:

  • 🔹 Артикулы: "AB-123 CD-456" — пробелы разделяют части кода.
  • 🔹 Телефоны: "8 912 345-67-89" — пробелы улучшают читаемость.
  • 🔹 Адреса: "г. Москва, ул. Ленина, д. 1" — пробелы обязательны.

Перед массовой очисткой пробелов проверьте данные на наличие таких случаев. Если пробелы нужны, используйте избирательную очистку:

  • 🔹 Для удаления пробелов только в начале/конце: =СЖПРОБЕЛЫ(A1).
  • 🔹 Для удаления пробелов между цифрами (но сохранения в тексте):
    =ЕСЛИ(ЕЧИСЛО(ПОДСТАВИТЬ(A1;" ";""));ПОДСТАВИТЬ(A1;" ";"");A1)

    Эта формула удаляет пробелы только если ячейка содержит число.

Критическая ошибка: никогда не применяйте замену Пробел → Пусто ко всему листу без предварительного анализа. Например, в ячейке с адресом "ул. Пушкина 10" после такой замены останется "ул.Пушкина10", что сделает данные нечитаемыми.

FAQ: Частые вопросы о пробелах в Excel

Почему после удаления пробелов числа не суммируются?

Скорее всего, ячейки всё ещё имеют текстовый формат. После очистки пробелов:

  1. Выделите проблемные ячейки.
  2. Нажмите Ctrl+1 (или правая кнопка → Формат ячеек).
  3. Выберите формат Числовой или Общий.
  4. Если не помогло, используйте функцию =ЗНАЧЕН(A1), чтобы принудительно преобразовать текст в число.
Как удалить пробелы в защищённом листе?

Если лист защищён от редактирования, но разрешены макросы:

  1. Откройте редактор VBA (Alt+F11).
  2. Вставьте макрос из Способа 4.
  3. Запустите макрос (F5 или Alt+F8).

Если макросы тоже заблокированы, попросите администратора листа временно снять защиту или предоставьте ему код для очистки.

Можно ли удалить пробелы без вспомогательных столбцов?

Да, есть три варианта:

  1. Поиск и замена (Ctrl+H) — если пробелы однотипные.
  2. Макрос VBA — обработает данные на месте.
  3. Функция ЗАМЕНИТЬ в том же столбце:
    1. Вставьте рядом временный столбец с формулой очистки.
    2. Скопируйте результаты (Ctrl+C).
    3. Выделите исходный столбец → правая кнопка → Специальная вставка → Значения.
    4. Удалите временный столбец.
Почему функция СЖПРОБЕЛЫ не убирает пробелы в некоторых ячейках?

Вероятные причины:

  • 🔹 В ячейке неразрывные пробелы (СИМВОЛ(160)) — используйте ПОДСТАВИТЬ (см. Способ 2).
  • 🔹 Пробелы на самом деле символы табуляции (СИМВОЛ(9)) — замените их через Ctrl+H.
  • 🔹 Ячейка содержит формулу, а не значение — сначала скопируйте данные как значения (Специальная вставка → Значения).
Как автоматизировать очистку пробелов при открытии файла?

Создайте макрос, который будет запускаться при открытии книги:

  1. Откройте редактор VBA (Alt+F11).
  2. Дважды кликните на ThisWorkbook в дереве проектов.
  3. Вставьте код:
    Private Sub Workbook_Open()
    

    Dim ws As Worksheet

    For Each ws In ThisWorkbook.Worksheets

    ws.Cells.Replace What:=Chr(160), Replacement:=" ", LookAt:=xlPart

    ws.Cells.Replace What:=Chr(32), Replacement:=" ", LookAt:=xlPart

    On Error Resume Next 'игнорировать ошибки на защищённых листах

    ws.UsedRange.Value = ws.Evaluate("IF(1,TRIM(" & ws.UsedRange.Address & "))")

    Next ws

    End Sub

  4. Сохраните файл как .xlsm (с поддержкой макросов).

Теперь при каждом открытии файла пробелы будут очищаться автоматически.