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

Почему пробелы в числах ломают формулы и как это исправить

Вы когда-нибудь сталкивались с ситуацией, когда вроде бы правильно введённое число в Excel вдруг отказывается участвовать в вычислениях? Например, сумма игнорирует ячейку, а функция СУММ возвращает неверный результат. В 90% случаев виноват невидимый пробел — лишний символ, который пользователь случайно добавил при вводе данных. Такой пробел может появиться при копировании из веб-страниц, импорте из баз данных или даже при ручном наборе, если после числа нажата клавиша Space.

Проблема в том, что Excel воспринимает " 123" (с пробелом перед числом) или "123 " (с пробелом после) как текст, а не как числовое значение. Это приводит к:

  • 🚫 Ошибкам в формулах (#ЗНАЧ!, #ЧИСЛО!)
  • 📉 Неправильной сортировке данных (числа с пробелами окажутся в конце списка)
  • 🔍 Проблемам с фильтрацией и сводными таблицами
  • 📊 Искажению результатов в диаграммах

В этой статье мы разберём 5 проверенных способов удаления пробелов из чисел — от ручных методов до автоматизации с помощью VBA. Вы узнаете, какой метод выбрать в зависимости от объёма данных и структуры таблицы, а также как избежать типичных ошибок.

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

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

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

Формула выглядит так:

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

Где A1 — ячейка с числом, содержащим пробел. После применения функции результат можно скопировать и вставить как значения (через Специальная вставка → Значения), чтобы избавиться от формулы.

⚠️ Внимание: Функция СЖПРОБЕЛЫ не удаляет неразрывные пробелы (вставленные через Ctrl+Shift+Space). Для них потребуется функция ЗАМЕНИТЬ.
Исходное значение Формула Результат Тип данных
" 123" =СЖПРОБЕЛЫ(A1) 123 Текст (преобразуется в число)
"1 000" =СЖПРОБЕЛЫ(A2) 1000 Текст
"500 " =СЖПРОБЕЛЫ(A3) 500 Число (после преобразования)

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

Способ 2: Поиск и замена — массовая очистка без формул

Если пробелы есть в сотнях или тысячах ячеек, ручное применение функций займёт слишком много времени. В этом случае поможет инструмент "Найти и заменить" (Ctrl+H). Этот метод подходит для удаления всех пробелов (включая неразрывные) или только пробелов в начале/конце чисел.

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

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

Для удаления только начальных/конечных пробелов используйте регулярные выражения (доступно в Excel 365 и Excel 2021):

  • 🔹 Удаление пробелов в начале: в поле "Найти" введите ^ (карет ^ и пробел), замените на пустоту.
  • 🔹 Удаление пробелов в конце: введите $ (пробел и знак доллара), замените на пустоту.
⚠️ Внимание: Если в ваших данных есть разделители тысяч (например, 1 000 000), массовая замена пробелов приведёт к потере форматирования. В этом случае используйте функцию ЗАМЕНИТЬ с точным указанием позиции пробела.

Создайте резервную копию данных|Проверьте, нет ли пробелов-разделителей|Убедитесь, что ячейки не содержат важных текстовых данных с пробелами|Протестируйте замену на небольшом диапазоне-->

Способ 3: Функция ЗАМЕНИТЬ (SUBSTITUTE) — точечное удаление пробелов

Функция ЗАМЕНИТЬ (или SUBSTITUTE в английской версии) позволяет удалять конкретные символы в тексте, включая пробелы. Её преимущество — гибкость: вы можете удалить все пробелы или только пробелы в определённых позициях.

Базовый синтаксис для удаления всех пробелов:

=ЗАМЕНИТЬ(A1; " "; "")

Где:

  • A1 — ячейка с исходными данными,
  • " " — пробел (искомый символ),
  • "" — пустая строка (на что заменяем).

Если нужно удалить только первый пробел (например, в начале числа), используйте функцию ПСТР в комбинации с НАЙТИ:

=ЕСЛИ(ЛЕВСИМВ(A1)=" "; ПСТР(A1; 2; ДЛСТР(A1)-1); A1)

Для удаления неразрывных пробелов (которые не удаляет TRIM) используйте их символ — CHAR(160):

=ЗАМЕНИТЬ(A1; СИМВОЛ(160); "")

Способ 4: Преобразование текста в число — если пробелы уже удалены, но формат остался текстовым

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

Метод 1: Принудительное преобразование функцией ЗНАЧЕН

=ЗНАЧЕН(СЖПРОБЕЛЫ(A1))

Метод 2: Умножение на 1 (самый быстрый способ):

=A1*1

Метод 3: Использование "Текст по столбцам":

  1. Выделите диапазон с данными.
  2. Перейдите в Данные → Текст по столбцам.
  3. Выберите "С разделителями"Далее.
  4. Снимите все галочки в разделе "Разделители"Готово.

После этого Excel автоматически преобразует текстовые числа в числовой формат.

Способ 5: Макрос VBA — автоматизация для больших таблиц

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

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

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

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

Dim rng As Range

Dim cell As Range

Set rng = Selection

For Each cell In rng

If VarType(cell.Value) = vbString Then

' Удаляем все пробелы (обычные и неразрывные)

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

' Преобразуем в число, если возможно

If IsNumeric(cell.Value) Then

cell.Value = CDbl(cell.Value)

cell.NumberFormat = "General"

End If

End If

Next cell

End Sub

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

⚠️ Внимание: Перед запуском макроса обязательно сохраните файл в формате .xlsm (с поддержкой макросов), иначе код не будет работать. Также отключите защиту листа, если она включена.
Как добавить макрос на панель быстрого доступа?

1. Перейдите в Файл → Параметры → Панель быстрого доступа.

2. В выпадающем списке выберите "Макросы".

3. Найдите ваш макрос (RemoveSpacesAndConvertToNumber) и добавьте его в правую колонку.

4. Нажмите "Изменить", чтобы назначить значок и имя для кнопки.

5. Сохраните изменения. Теперь макрос будет доступен в один клик.

Типичные ошибки и как их избежать

При работе с пробелами в числах пользователи часто сталкиваются с одними и теми же проблемами. Вот самые распространённые ошибки и способы их решения:

Ошибка Причина Решение
Формула СЖПРОБЕЛЫ не удаляет пробелы В тексте используются неразрывные пробелы (CHAR(160)) Используйте ЗАМЕНИТЬ(A1; СИМВОЛ(160); "")
После удаления пробелов числа не суммируются Данные остаются в текстовом формате Примените ЗНАЧЕН или умножьте на 1
Макрос не работает Файл сохранён в формате .xlsx без поддержки макросов Сохраните файл как .xlsm
Потеряны разделители тысяч Массовая замена удалила все пробелы, включая форматирование Используйте функцию ФОРМУЛА.ТЕКСТ для восстановления разделителей

Ещё одна частая проблема — скрытые символы, которые не видны при просмотре ячейки, но влияют на вычисления. Чтобы их обнаружить, используйте функцию КОДСИМВ для анализа каждого символа:

=КОДСИМВ(ЛЕВСИМВ(A1))

Если результат — 160, в ячейке есть неразрывный пробел.

FAQ: Ответы на частые вопросы

Можно ли удалить пробелы во всём файле сразу, не выделяя диапазон?

Да, для этого используйте макрос, который обработает все листы книги. Добавьте в код цикл по листам:

Dim ws As Worksheet

For Each ws In ThisWorkbook.Worksheets

ws.UsedRange.Select

' Здесь вызовите функцию удаления пробелов

Next ws

Но будьте осторожны: это может затрагивать ячейки с важными текстовыми данными, где пробелы нужны.

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

Это означает, что ширина столбца недостаточна для отображения числа в текущем формате. Расширьте столбец или измените формат на "Общий".

Как удалить пробелы в числах, импортированных из PDF?

При импорте из PDF часто добавляются не только пробелы, но и другие непечатаемые символы. Используйте комбинацию функций:

=ЗНАЧЕН(ПОДСТАВИТЬ(ПОДСТАВИТЬ(СЖПРОБЕЛЫ(A1); СИМВОЛ(160); ""); СИМВОЛ(13); ""))

Где СИМВОЛ(13) — символ возврата каретки.

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

Да, с помощью события Worksheet_Change в VBA. Добавьте этот код в модуль листа:

Private Sub Worksheet_Change(ByVal Target As Range)

Dim cell As Range

For Each cell In Target

If VarType(cell.Value) = vbString Then

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

End If

Next cell

End Sub

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

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

Используйте функцию ФОРМУЛА.ТЕКСТ (в английской версии — TEXT) с пользовательским форматом:

=ФОРМУЛА.ТЕКСТ(ЗНАЧЕН(СЖПРОБЕЛЫ(A1)); "# ##0")

Это добавит пробелы-разделители без изменения числового значения.