Пробелы между цифрами в Microsoft Excel — распространённая проблема, которая возникает при импорте данных из внешних источников, копировании с веб-сайтов или ручном вводе. Эти "невидимые" символы мешают корректной обработке чисел: формулы возвращают ошибки #ЗНАЧ!, сортировка работает неправильно, а диаграммы отображают данные с искажениями. В 80% случаев пользователи даже не подозревают о наличии пробелов, пока не сталкиваются с ошибками в расчётах.
В этой статье мы разберём 5 проверенных методов удаления пробелов между цифрами — от базовых функций ПОИСК/ЗАМЕНА до автоматизированных решений на VBA. Особое внимание уделим нюансам: почему стандартная замена пробела на "ничего" иногда не работает, как обработать тысячи строк за секунды, и что делать, если пробелы комбинируются с другими непечатаемыми символами (например, NBSP). Все методы протестированы на Excel 2010–2023 и Office 365.
1. Быстрая замена пробелов через "Найти и заменить"
Самый простой способ — использовать встроенный инструмент Найти и заменить (Ctrl+H). Он подходит для одноразовой обработки небольших таблиц (до 10 000 строк) и не требует знания формул.
Алгоритм действий:
- 📋 Выделите диапазон ячеек с данными (или нажмите
Ctrl+A, чтобы выбрать весь лист). - 🔍 Нажмите
Ctrl+H, чтобы открыть окноЗаменить. - 🔘 В поле
Найтивведите один пробел (просто нажмите клавишуSpace). - 📛 Поле
Заменить наоставьте пустым. - 🔄 Нажмите
Заменить всё.
⚠️ Внимание: Этот метод удаляет все пробелы в ячейке, включая разделители между словами (например, в адресах или ФИО). Для чисел он безопасен, но если в таблице смешаны тексты и цифры — используйте другие способы.
2. Функция ПСТР + ПОИСК: удаление пробелов без потери формата
Если пробелы расположены строго между цифрами (например, 1 234 567), а не в начале/конце ячейки, используйте комбинацию функций ПСТР и ПОИСК. Этот метод сохраняет исходный формат чисел и работает даже с текстом, содержащим буквы.
Формула для ячейки B1 (если исходные данные в A1):
=ПСТР($A1;1;ПОИСК(" ";$A1)-1) & ПСТР($A1;ПОИСК(" ";$A1)+1;ДЛСТР($A1))
Как это работает:
ПОИСК(" ";$A1)— находит позицию первого пробела.ПСТР($A1;1;ПОИСК(" ";$A1)-1)— извлекает часть строки до пробела.ПСТР($A1;ПОИСК(" ";$A1)+1;ДЛСТР($A1))— извлекает часть после пробела.&— объединяет две части без пробела.
Для обработки нескольких пробелов используйте рекурсивную формулу (требуется Excel 365):
=ЕСЛИ(НАЙТИ(" ";A1); ЗАМЕНИТЬ(A1;" ";""); A1)
3. Функция СЖПРОБЕЛЫ: когда пробелы не только между цифрами
Функция СЖПРОБЕЛЫ (TRIM в английской версии) удаляет все лишние пробелы в ячейке, включая:
- 🔹 Пробелы в начале и конце строки.
- 🔹 Повторяющиеся пробелы между словами/цифрами (оставляет только один).
- 🔹
NBSP(неразрывные пробелы,Char(160)).
Пример использования:
=СЖПРОБЕЛЫ(A1)
Ограничения метода:
| Проблема | Решение |
|---|---|
Не удаляет пробелы между цифрами, если они единичные (например, 1 000 останется 1 000). | Комбинируйте с ЗАМЕНИТЬ: |
Не работает с пробелами, вставленными как символы (Char(32) в формулах). | Используйте ПОДСТАВИТЬ с указанием кода символа. |
Меняет формат ячейки на Текстовый. | Примените формат Числовой после обработки. |
4. Макрос VBA: обработка тысяч строк за секунды
Если таблица содержит десятки тысяч строк, ручные методы неэффективны. Автоматизируйте процесс с помощью VBA-макроса. Этот код удаляет все пробелы в выбранном диапазоне, включая неразрывные (NBSP):
Как запустить:
- Нажмите
Alt+F11, чтобы открыть редактор VBA. - В меню выберите
Insert → Module. - Вставьте код:
Sub RemoveAllSpaces()
Dim rng As Range
Dim cell As Range
Set rng = Selection
For Each cell In rng
cell.Value = Replace(Replace(cell.Value, " ", ""), Chr(160), "")
Next cell
End Sub
⚠️ Внимание: Макрос безвозвратно изменяет исходные данные. Перед запуском:
- 💾 Сохраните копию файла.
- 🔍 Проверьте работу макроса на небольшом диапазоне (например, 10 строк).
- 🔒 Отключите защиту листа, если она включена.
Сохранить резервную копию файла|Выделить диапазон для обработки|Отключить защиту листа (если есть)|Проверять результат на тестовых данных-->
5. Power Query: обработка больших данных без формул
Power Query (доступен в Excel 2016+ и Office 365) — мощный инструмент для очистки данных. Он позволяет удалить пробелы в процессе импорта или преобразования таблиц, не затрагивая исходные файлы.
Пошаговая инструкция:
- Выделите диапазон → перейдите на вкладку
Данные→Из таблицы/диапазона. - В открывшемся окне Power Query выделите столбец с пробелами.
- На вкладке
ПреобразованиевыберитеФормат → Очистить → Очистить пробелы. - Для удаления всех пробелов (включая единичные) используйте
Заменить значения:
- 🔍 В поле
Значение для поискавведите пробел. - 📛 В поле
Заменить наоставьте пусто.
5. Нажмите Закрыть и загрузить, чтобы вернуть данные в Excel.
Power Query сохраняет все шаги очистки. При обновлении исходных данных (например, при импорте нового файла) пробелы будут удаляться автоматически.
Как удалить пробелы при импорте из CSV/ТXT?
При импорте файла через Данные → Из текстового/CSV-файла выберите столбец с пробелами → на шаге преобразования примените Очистить пробелы. Это избавит от необходимости ручной обработки после импорта.
6. Пробелы в числовых форматах: особенности обработки
Иногда пробелы в числах — это не ошибка, а разделитель разрядов (например, 1 000 000 вместо 1000000). В этом случае удаление пробелов приведёт к потере читаемости. Чтобы сохранить форматирование, используйте один из методов:
Способ 1. Замена пробела на ничего + пользовательский формат:
- Удалите пробелы любым методом из этой статьи.
- Выделите ячейки → нажмите
Ctrl+1→ перейдите на вкладкуЧисло. - Выберите
(все форматы)→ введите маску:# ##0(для чисел до миллионов) или# ##0 # ##0(для миллиардов).
Способ 2. Функция ТЕКСТ с разделителями:
=ТЕКСТ(ЗАМЕНИТЬ(A1;" ";"");"# ##0")
⚠️ Внимание: Если вы экспортируете данные в системы, чувствительные к форматированию (например, 1С или SQL), пробелы-разделители могут вызвать ошибки. В этом случае используйте точку или запятую как разделитель:
=ТЕКСТ(ЗАМЕНИТЬ(A1;" ";"");"#.##0")
7. Проблемы и решения: почему пробелы не удаляются?
Если ни один из методов не сработал, проверьте следующие нюансы:
| Симптом | Причина | Решение |
|---|---|---|
Пробелы остаются после ЗАМЕНИТЬ. | В ячейке не стандартный пробел (Char(32)), а NBSP (Char(160)) или другой символ. | Используйте |
Формулы возвращают #ЗНАЧ!. | Ячейка содержит непечатаемые символы (например, табуляцию или перевод строки). | Примените перед удалением пробелов. |
| После удаления пробелов числа стали текстом. | Excel автоматически конвертирует данные в текстовый формат. | Используйте или примените формат Числовой. |
| Макрос не работает. | Отключены макросы в настройках безопасности. | Перейдите в Файл → Параметры → Центр управления безопасностью → Параметры центра → Включить все макросы. |
FAQ: Частые вопросы по удалению пробелов
Можно ли удалить пробелы только между цифрами, но оставить их в тексте?
Да, используйте формулу с проверкой символов:
=ЕСЛИОШИБКА(ЗНАЧЕН(ЗАМЕНИТЬ(A1;" ";"")); A1; ЗАМЕНИТЬ(A1;" ";""))
Эта формула удаляет пробелы только если ячейка содержит число (включая числа в текстовом формате).
Как удалить пробелы в 100 000 строк без зависания Excel?
Для больших объёмов данных:
- Разбейте таблицу на части по 10 000 строк.
- Используйте Power Query (самый стабильный метод).
- Для VBA отключите обновление экрана:
Application.ScreenUpdating = False
' Ваш код
Application.ScreenUpdating = True
Почему после удаления пробелов числа отображаются с экспонентой (например, 1E+10)?
Это происходит, если число превышает 15 знаков — Excel автоматически конвертирует его в экспоненциальный формат. Чтобы вернуть обычный вид:
- Увеличьте ширину столбца.
- Примените текстовый формат к ячейке.
- Используйте функцию
=ТЕКСТ(A1;"0").
Как удалить пробелы при импорте данных из PDF?
PDF-файлы часто содержат NBSP и другие непечатаемые символы. Лучший способ:
- Импортируйте данные через Power Query.
- Добавьте пользовательский столбец с формулой:
=Text.Replace([Column1], " ", "")
Где [Column1] — имя вашего столбца.
Можно ли автоматизировать удаление пробелов при открытии файла?
Да, с помощью VBA-кода в событии Workbook_Open:
Private Sub Workbook_Open()
Dim ws As Worksheet
For Each ws In ThisWorkbook.Worksheets
ws.Cells.Replace What:=" ", Replacement:="", LookAt:=xlPart
ws.Cells.Replace What:=Chr(160), Replacement:="", LookAt:=xlPart
Next ws
End Sub
⚠️ Этот код будет удалять все пробелы во всех листах при каждом открытии файла. Используйте с осторожностью!