Лишние пробелы в ячейках Microsoft Excel — одна из самых распространённых проблем при работе с текстовыми данными. Они появляются при импорте из других систем, копировании с веб-сайтов или даже после ручного ввода. Эти "невидимые" символы портят сортировку, нарушают работу функций ВПР и ПОИСКПОЗ, а иногда делают невозможным сравнение строк. Например, ячейки с визуально одинаковым текстом `"Пример"` и `" Пример "` (с пробелом в начале) Excel воспринимает как разные значения.
Многие пользователи пытаются удалить пробелы вручную, но при больших объёмах данных это занимает часы. К счастью, в Excel есть как минимум 7 эффективных способов автоматизировать процесс — от простой функции СЖПРОБЕЛЫ до мощных инструментов Power Query. В этой статье мы разберём каждый метод с примерами, нюансами и предупреждениями о типичных ошибках. Вы узнаете, как очистить данные за секунды, даже если никогда раньше не работали с формулами.
Особое внимание уделим случаям, когда стандартные функции не помогают — например, при неразрывных пробелах (код CHAR(160)) или когда пробелы скрыты среди других непечатаемых символов. Для таких задач потребуются комбинации функций или короткие макросы на VBA. Готовы оптимизировать свою работу с данными?
1. Функция СЖПРОБЕЛЫ (TRIM) — базовый метод для начинающих
Функция СЖПРОБЕЛЫ (англ. TRIM) — самый простой способ удалить лишние пробелы в Excel. Она убирает:
- 🔹 Ведущие пробелы (в начале текста)
- 🔹 Завершающие пробелы (в конце текста)
- 🔹 Множественные пробелы между словами (оставляет только один)
Формула работает только с обычными пробелами (код CHAR(32)). Если в ваших данных есть неразрывные пробелы или другие непечатаемые символы, СЖПРОБЕЛЫ их проигнорирует.
Пример использования:
=СЖПРОБЕЛЫ(A1)
Где A1 — ячейка с исходным текстом. Чтобы применить функцию ко всему столбцу, просто протяните формулу вниз за правый нижний угол ячейки.
⚠️ Внимание: ФункцияСЖПРОБЕЛЫне изменяет исходные данные — она возвращает очищенный результат в новой ячейке. Чтобы заменить оригинальные значения, используйтеСпециальную вставку → Значенияпосле применения формулы.
Если вам нужно обработать весь диапазон сразу, используйте комбинацию с функцией МАССИВ (в новых версиях Excel):
=МАССИВ(СЖПРОБЕЛЫ(A1:A100);1)
Эта формула вернёт очищенные данные в виде динамического массива, который автоматически заполнит соседние ячейки.
2. Комбинация ПЕЧСИМВ + ПОДСТАВИТЬ для неразрывных пробелов
Неразрывные пробелы (код CHAR(160)) часто встречаются в данных, скопированных с веб-страниц или из PDF. Они выглядят как обычные, но СЖПРОБЕЛЫ их не удаляет. Чтобы обнаружить и убрать такие символы, используйте комбинацию функций ПЕЧСИМВ и ПОДСТАВИТЬ.
Сначала проверьте, есть ли в ваших данных неразрывные пробелы. Для этого введите в пустой ячейке:
=КОДСИМВ(ПРАВСИМВ(A1))
Если результат равен 160, значит, в конце текста есть неразрывный пробел.
Чтобы заменить все неразрывные пробелы на обычные, а затем убрать лишние, используйте формулу:
=СЖПРОБЕЛЫ(ПОДСТАВИТЬ(A1;СИМВОЛ(160);" "))
Если нужно удалить все неразрывные пробелы (включая те, что между словами), используйте:
=ПОДСТАВИТЬ(СЖПРОБЕЛЫ(A1);СИМВОЛ(160);"")
Для обработки всего столбца комбинируйте с функцией МАССИВ:
=МАССИВ(СЖПРОБЕЛЫ(ПОДСТАВИТЬ(A1:A100;СИМВОЛ(160);" "));1)
⚠️ Внимание: Неразрывные пробелы могут использоваться в данных намеренно — например, чтобы предотвратить перенос слов. Удаляйте их только если уверены, что они лишние.
3. Найти и заменить — ручной метод без формул
Если вам нужно убрать пробелы однократно и вы не хотите использовать формулы, воспользуйтесь инструментом Найти и заменить (Ctrl+H). Этот метод подходит для:
- 📌 Удаления всех пробелов в выделенном диапазоне
- 📌 Замены множественных пробелов на одиночные
- 📌 Удаления пробелов в начале/конце текста
Инструкция по шагам:
- Выделите диапазон ячеек, который нужно очистить.
- Нажмите
Ctrl+H, чтобы открыть окноНайти и заменить. - В поле
Найтивведите пробел (нажмите клавишуSpace). - В поле
Заменить наоставьте пустым (ничего не вводите). - Нажмите
Заменить всё.
Чтобы заменить множественные пробелы на одиночные:
- В поле
Найтивведите два пробела (). - В поле
Заменить навведите один пробел (). - Нажимайте
Заменить всёдо тех пор, пока Excel не сообщит, что замены больше не найдены.
Для удаления пробелов только в начале или конце текста используйте подстановочные знаки:
- Убрать пробелы в начале: в поле
Найтивведите^(каретка + пробел), вЗаменить наоставьте пустым. - Убрать пробелы в конце: в поле
Найтивведите^(пробел + каретка), вЗаменить наоставьте пустым.
⚠️ Внимание: Метод Найти и заменить необратимо изменяет исходные данные. Перед выполнением создайте резервную копию файла или сохраните текущую версию.
Создать резервную копию файла|Выделить только нужный диапазон|Проверить включён ли режим "Учитывать регистр" (если нужно)|Отменить замену (Ctrl+Z) при ошибке-->
4. Power Query — мощный инструмент для больших данных
Если вы работаете с большими наборами данных (тысячи строк), Power Query — самый эффективный способ очистки. Этот инструмент позволяет:
- 🔧 Удалять пробелы в начале/конце текста
- 🔧 Заменять множественные пробелы на одиночные
- 🔧 Обрабатывать данные без изменения исходного файла
- 🔧 Автоматизировать процесс для повторного использования
Инструкция по очистке пробелов в Power Query:
- Выделите ваш диапазон данных и перейдите на вкладку
Данные → Из таблицы/диапазона(в Excel 2016 и новее). - В открывшемся окне Power Query выделите столбец, который нужно очистить.
- Перейдите на вкладку
Преобразованиеи выберите:Очистить → Обрезать— удалит пробелы в начале и конце.Очистить → Заменить значения— для замены множественных пробелов (введите два пробела в полеЗначение для поискаи один пробел вЗамена).
Закрыть и загрузить, чтобы вернуть данные в Excel.Преимущество Power Query в том, что все шаги очистки сохраняются. При обновлении исходных данных вам достаточно нажать Обновить всё, и пробелы будут удалены автоматически.
Для удаления всех пробелов (включая пробелы между словами) в Power Query:
- Выделите столбец и выберите
Преобразование → Заменить значения. - В поле
Значение для поискавведите пробел (). - В поле
Заменаоставьте пустым. - 🖥️ Все пробелы в начале и конце текста
- 🖥️ Неразрывные пробелы (
Char(160)) - 🖥️ Множественные пробелы между словами (оставляет один)
| Метод | Удаляет пробелы в начале/конце | Удаляет множественные пробелы | Работает с неразрывными пробелами | Сохраняет изменения |
|---|---|---|---|---|
СЖПРОБЕЛЫ |
✅ Да | ✅ Да | ❌ Нет | ❌ Нет (нужна специальная вставка) |
ПЕЧСИМВ + ПОДСТАВИТЬ |
✅ Да | ✅ Да | ✅ Да | ❌ Нет |
Найти и заменить |
✅ Да | ✅ Да | ❌ Нет | ✅ Да (необратимо) |
| Power Query | ✅ Да | ✅ Да | ✅ Да | ✅ Да (сохраняет шаги) |
5. Макросы VBA для автоматизации очистки
Если вам часто приходится удалять пробелы в Excel, имеет смысл создать макрос на VBA. Это позволит очищать данные одним кликом, даже в очень больших файлах. Ниже приведён код макроса, который удаляет:
Как добавить макрос:
- Нажмите
Alt+F11, чтобы открыть редактор VBA. - В меню выберите
Insert → Module. - Скопируйте и вставьте следующий код:
Sub УдалитьПробелы()Dim rng As Range
Dim cell As Range
Dim originalValue As String
Dim cleanedValue As String
' Выбор диапазона (можно изменить на нужный)
Set rng = Selection
' Отключаем обновление экрана для ускорения
Application.ScreenUpdating = False
For Each cell In rng
originalValue = cell.Value
' Замена неразрывных пробелов на обычные
cleanedValue = Replace(originalValue, Chr(160), " ")
' Удаление лишних пробелов
cleanedValue = Application.WorksheetFunction.Trim(cleanedValue)
' Замена множественных пробелов на одиночные
Do While InStr(cleanedValue, " ")
cleanedValue = Replace(cleanedValue, " ", " ")
Loop
cell.Value = cleanedValue
Next cell
Application.ScreenUpdating = True
MsgBox "Очистка пробелов завершена!", vbInformation
End Sub
- Закройте редактор VBA.
- Выделите диапазон ячеек, который нужно очистить, и запустите макрос через
Вид → Макросы → УдалитьПробелы → Выполнить.
Чтобы назначить макрос на кнопку для быстрого доступа:
- Перейдите на вкладку
Разработчик → Вставить → Кнопка (элемент управления формы). - Нарисуйте кнопку на листе и в появившемся окне выберите макрос
УдалитьПробелы.
⚠️ Внимание: Макросы могут быть отключены по умолчанию в целях безопасности. Чтобы их запустить, перейдите в Файл → Параметры → Центр управления безопасностью → Параметры центра управления безопасностью → Включить все макросы (не рекомендуется для файлов из ненадёжных источников).
Как защитить макрос от случайного изменения?
Чтобы предотвратить случайное изменение кода макроса, можно:
1. Заблокировать проект VBA паролем (в редакторе VBA: Tools → VBAProject Properties → Protection).
2. Сохранить файл в формате .xlsm (с поддержкой макросов) и установить пароль на открытие.
3. Экспортировать модуль с макросом (File → Export File) и хранить резервную копию отдельно.
6. Функция ПОЛУЧИТЬ.ДАННЫЕ.СВЯЗИ для импорта без пробелов
Если пробелы появляются при импорте данных из внешних источников (например, из CSV, TXT или баз данных), можно предотвратить их появление ещё на этапе загрузки. Для этого используйте функцию ПОЛУЧИТЬ.ДАННЫЕ.СВЯЗИ (англ. GET.DATA) или инструмент Power Query с предварительной очисткой.
Пример импорта данных из CSV без пробелов:
- Перейдите на вкладку
Данные → Получить данные → Из файла → Из текстового/CSV-файла. - Выберите ваш файл и нажмите
Импортировать. - В окне предварительного просмотра нажмите
Преобразовать данные, чтобы открыть Power Query. - Выделите столбцы с текстовыми данными и примените очистку (как описано в разделе 4).
- Нажмите
Закрыть и загрузить, чтобы импортировать данные без пробелов.
Если вы используете функцию ПОЛУЧИТЬ.ДАННЫЕ.СВЯЗИ напрямую в ячейке, комбинируйте её с СЖПРОБЕЛЫ:
=СЖПРОБЕЛЫ(ПОЛУЧИТЬ.ДАННЫЕ.СВЯЗИ("SELECT * FROM [Sheet1$]";"C:\Путь\к\файлу.xlsx"))
Для автоматизации процесса создайте запрос в Power Query и настройте его обновление по расписанию (Данные → Обновить всё → Свойства связи).
7. Продвинутые приёмы: регулярные выражения и пользовательские функции
Для сложных случаев, когда пробелы перемежаны с другими непечатаемыми символами (табуляции, переводы строк и т.д.), можно использовать регулярные выражения (regex). В Excel нет встроенной поддержки regex, но их можно реализовать через:
- 🛠️ Пользовательские функции VBA с библиотекой
VBScript.RegExp - 🛠️ Power Query (в новых версиях поддерживает regex)
- 🛠️ Надстройки (например, Kutools for Excel)
Пример пользовательской функции на VBA для удаления всех пробелов (включая неразрывные и табуляции):
Function CleanAllSpaces(rng As Range) As String
Dim regex As Object
Set regex = CreateObject("VBScript.RegExp")
With regex
.Global = True
.Pattern = "[\s\u00A0]+"
CleanAllSpaces = .Replace(rng.Value, " ")
End With
' Удаляем лишние пробелы в начале и конце
CleanAllSpaces = Trim(CleanAllSpaces)
End Function
Используйте её в Excel как обычную функцию:
=CleanAllSpaces(A1)
В Power Query (Excel 2016+) для удаления всех пробелов с помощью regex:
- Выделите столбец и выберите
Преобразование → Заменить значения → Дополнительные параметры. - Включите опцию
Использовать регулярные выражения. - В поле
Значение для поискавведите\s+(найдёт все пробелы, включая неразрывные и табуляции). - В поле
Заменавведите один пробел () или оставьте пустым, чтобы удалить все пробелы.
⚠️ Внимание: Регулярные выражения в Power Query работают только в версиях Excel 2016 и новее. В старых версиях используйте VBA или надстройки.
FAQ: Частые вопросы по удалению пробелов в Excel
Можно ли убрать пробелы сразу во всём файле, не выделяя диапазон?
Да, но только с помощью макроса. Стандартные функции Excel требуют указания диапазона. Вот макрос для очистки всех ячеек на активном листе:
Sub TrimAllCells()
Dim cell As Range
For Each cell In ActiveSheet.UsedRange
If cell.HasFormula = False Then
cell.Value = Application.WorksheetFunction.Trim(cell.Value)
End If
Next cell
End Sub
Обратите внимание: макрос пропускает ячейки с формулами, чтобы не нарушить вычисления. Также он не удаляет неразрывные пробелы — для этого добавьте строку cell.Value = Replace(cell.Value, Chr(160), " ") перед Trim.
Почему после применения СЖПРОБЕЛЫ пробелы остаются?
Вероятные причины:
- 🔍 В тексте есть неразрывные пробелы (
Char(160)) — используйте комбинацию сПОДСТАВИТЬ. - 🔍 Пробелы на самом деле являются другими непечатаемыми символами (табуляции, переводы строк). Проверьте с помощью функции
=КОДСИМВ(ПРАВСИМВ(A1)). - 🔍 Ячейка содержит формулу, а не текст. Примените
СЖПРОБЕЛЫк результату формулы или преобразуйте формулы в значения (Копировать → Специальная вставка → Значения).
Как убрать пробелы в ячейках, но сохранить пробелы между словами?
Используйте функцию СЖПРОБЕЛЫ — она удаляет только лишние пробелы:
- 📌 Пробелы в начале и конце текста.
- 📌 Множественные пробелы между словами (оставляет один).
Пример:
=СЖПРОБЕЛЫ(" Пример текста ") ' Вернёт "Пример текста"
Если в тексте есть неразрывные пробелы, сначала замените их на обычные с помощью ПОДСТАВИТЬ.
Можно ли вернуть пробелы обратно после очистки?
Нет, если вы использовали методы, которые необратимо изменяют данные (например, Найти и заменить или макросы). Чтобы избежать потерь:
- 🔄 Всегда сохраняйте резервную копию файла перед очисткой.
- 🔄 Используйте функции (например,
СЖПРОБЕЛЫ) в отдельном столбце, чтобы исходные данные оставались нетронутыми. - 🔄 В Power Query оригинальные данные не изменяются — вы всегда можете обновить запрос.
Как убрать пробелы в ячейках с числами (например, " 123 ")?
Если пробелы мешают Excel воспринимать данные как числа, используйте один из методов:
- Функция
ЗНАЧЕН:=ЗНАЧЕН(СЖПРОБЕЛЫ(A1)) - Найти и заменить: Замените пробел на ничего (
Ctrl+H). - Текст по столбцам:
- Выделите столбец с числами.
- Перейдите на вкладку
Данные → Текст по столбцам. - Выберите
С разделителями → Далее → Пробел(снимите все галочки) →Готово.
После очистки измените формат ячеек на Числовой или Общий.