Лишние пробелы в начале, конце или между словами в ячейках Excel искажают результаты формул, мешают сортировке и фильтрации данных. Если при копировании из веб-страниц, баз данных или других источников в ваших таблицах появились невидимые символы пробела (CHAR(32)), табуляции (CHAR(9)) или переносы строк (CHAR(10)), их нужно удалить. Самый очевидный признак проблемы — когда функция ДЛСТР() показывает длину строки больше, чем видно визуально, или СЖПРОБЕЛЫ() не справляется с неразрывными пробелами (CHAR(160)).
В 90% случаев достаточно стандартной функции TRIM (или её русскоязычного аналога СЖПРОБЕЛЫ), но она не удаляет все типы пробелов. Например, неразрывные пробелы (вставляемые через Ctrl+Shift+Пробел) и символы табуляции останутся. Для сложных случаев потребуются Power Query, макросы VBA или комбинация функций ПОДСТАВИТЬ + СЖПРОБЕЛЫ. Ниже — пошаговые инструкции для каждого метода с примерами и предупреждениями о типичных ошибках.
1. Функция СЖПРОБЕЛЫ (TRIM): базовый метод
Функция СЖПРОБЕЛЫ (англ. TRIM) удаляет все пробелы в начале и конце строки, а также сокращает несколько пробелов между словами до одного. Это самый быстрый способ, но он работает только с обычными пробелами (CHAR(32)) и не затрагивает неразрывные пробелы или табуляции.
Как применить:
- В пустой ячейке (например,
B1) введите формулу:=СЖПРОБЕЛЫ(A1) - Растяните формулу на весь диапазон (двойной клик по маркеру автозаполнения).
- Скопируйте результаты (
Ctrl+C) и вставьте как значения (ПКМ → Значения) поверх исходных данных.
Ограничения метода:
- 🚫 Не удаляет неразрывные пробелы (
CHAR(160)), которые часто встречаются в данных, скопированных с веб-страниц. - 🚫 Не работает с символами табуляции (
CHAR(9)) и переносами строк (CHAR(10)). - 🚫 Если в ячейке только пробелы, функция вернёт пустую строку.
2. Комбинация ПОДСТАВИТЬ + СЖПРОБЕЛЫ для неразрывных пробелов
Неразрывные пробелы (CHAR(160)) не удаляются функцией СЖПРОБЕЛЫ, так как технически это другой символ. Чтобы их убрать, сначала замените их на обычные пробелы с помощью ПОДСТАВИТЬ, а затем примените СЖПРОБЕЛЫ:
=СЖПРОБЕЛЫ(ПОДСТАВИТЬ(A1;СИМВОЛ(160);" "))
Разберём формулу:
- 🔹
СИМВОЛ(160)— это неразрывный пробел. - 🔹
ПОДСТАВИТЬзаменяет всеCHAR(160)на обычные пробелы (" "). - 🔹
СЖПРОБЕЛЫудаляет лишние пробелы в начале/конце и между словами.
Если в данных есть и табуляции (CHAR(9)), и переносы строк (CHAR(10)), используйте вложенные ПОДСТАВИТЬ:
=СЖПРОБЕЛЫ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(A1;СИМВОЛ(160);" ");СИМВОЛ(9);" ");СИМВОЛ(10);" "))
3. Power Query: удаление всех типов пробелов
Power Query (в Excel 2016+ и Office 365) — самый мощный инструмент для очистки данных. Он удаляет все типы пробелов, включая неразрывные, табуляции и переносы строк, а также позволяет автоматизировать процесс для больших таблиц.
Пошаговая инструкция:
- Выделите исходный диапазон данных.
- Перейдите на вкладку
Данные→Из таблицы/диапазона(если данные не в таблице, Excel предложит создать её). - В открывшемся редакторе Power Query выделите столбец с пробелами.
- На вкладке
ПреобразованиевыберитеФормат → Обрезка(удалит пробелы в начале/конце) → затемЗаменить значения: - 🔹 В поле
Найтивведите(пробел). - 🔹 В поле
Заменить наоставьте пустым. - 🔹 Нажмите
Заменить все.
Найти вставьте символ неразрывного пробела (скопируйте его из ячейки с проблемой или используйте Alt+0160 на цифровой клавиатуре).Закрыть и загрузить, чтобы вернуть очищенные данные в Excel.Выделил исходный диапазон|Создал таблицу (если не было)|Применил "Обрезка" для удаления пробелов по краям|Заменил обычные пробелы на пустоту|Заменил неразрывные пробелы на пустоту|Сохранил и загрузил данные обратно-->
Преимущества метода:
- ✅ Обрабатывает все типы пробелов, включая скрытые.
- ✅ Сохраняет шаги очистки: при обновлении данных пробелы удалятся автоматически.
- ✅ Работает с большими объёмами данных (миллионы строк).
Как вставить неразрывный пробел в Power Query?
Скопируйте его из проблемной ячейки Excel (выделите ячейку, нажмите F2, затем скопируйте пробел) или используйте комбинацию Alt+0160 на цифровой клавиатуре (Num Lock должен быть включён).
4. Макрос VBA для массовой очистки
Если нужно очистить тысячи строк и функции или Power Query недоступны, используйте макрос на VBA. Этот код удаляет все типы пробелов (включая неразрывные и табуляции) и переносы строк:
Sub УдалитьВсеПробелы()
Dim rng As Range
Dim cell As Range
Set rng = Selection 'или укажите диапазон: Range("A1:A100")
For Each cell In rng
If Not IsEmpty(cell) Then
cell.Value = WorksheetFunction.Trim(Replace(Replace(Replace(cell.Value, Chr(160), " "), Chr(9), " "), Chr(10), " "))
cell.Value = WorksheetFunction.Trim(cell.Value)
End If
Next cell
End Sub
Как использовать:
- Нажмите
Alt+F11, чтобы открыть редактор VBA. - Вставьте код в новый модуль (
Вставка → Модуль). - Выделите диапазон ячеек в Excel и запустите макрос (
F5).
⚠️ Внимание: Макрос безвозвратно изменяет данные в выбранных ячейках. Сначала протестируйте его на копии таблицы.
Расширенная версия макроса (удаляет все непечатаемые символы, кроме букв и цифр):
Sub ОчиститьЯчейкиОтСимволов()
Dim rng As Range, cell As Range
Dim i As Integer, newStr As String
Set rng = Selection
For Each cell In rng
If Not IsEmpty(cell) Then
newStr = ""
For i = 1 To Len(cell.Value)
Select Case Asc(Mid(cell.Value, i, 1))
Case 32, 160, 9, 10, 13 ' пробелы, табуляции, переносы
' пропускаем
Case Else
newStr = newStr & Mid(cell.Value, i, 1)
End Select
Next i
cell.Value = WorksheetFunction.Trim(newStr)
End If
Next cell
End Sub
5. Найти и заменить: ручной метод для небольших таблиц
Если пробелов мало и они однотипные, используйте стандартную функцию Найти и заменить (Ctrl+H):
| Тип пробела | Что вводить в поле "Найти" | Что вводить в поле "Заменить на" |
|---|---|---|
| Обычный пробел | (пробел) |
Оставить пустым |
| Неразрывный пробел | Alt+0160 (удерживайте Alt, наберите 0160 на цифровой клавиатуре) |
Оставить пустым |
| Табуляция | ^t (введите вручную) |
Оставить пустым |
| Перенос строки | ^l (маленькая L) |
Оставить пустым |
Порядок действий:
- Выделите диапазон ячеек.
- Нажмите
Ctrl+H. - В поле
Найтивставьте символ из таблицы выше. - Оставьте поле
Заменить напустым. - Нажмите
Заменить все. - Повторите для каждого типа пробелов.
⚠️ Внимание: Замена^l(перенос строки) на пустоту объединит текст из нескольких строк в одну. Если это нежелательно, замените^lна(пробел).
6. Функция CLEAN: удаление непечатаемых символов
Функция ОЧИСТИТЬ (англ. CLEAN) удаляет все непечатаемые символы (коды 0–31 в таблице ASCII), включая табуляции и переносы строк. Однако она не удаляет пробелы (код 32) и неразрывные пробелы (код 160). Чтобы очистить данные полностью, комбинируйте её с СЖПРОБЕЛЫ и ПОДСТАВИТЬ:
=СЖПРОБЕЛЫ(ПОДСТАВИТЬ(ОЧИСТИТЬ(A1);СИМВОЛ(160);" "))
Примеры символов, которые удаляет ОЧИСТИТЬ:
- 📌 Табуляции (
CHAR(9)). - 📌 Переносы строк (
CHAR(10)иCHAR(13)). - 📌 Символы с кодами 0–31 (например,
CHAR(7)— звуковой сигнал).
Ограничения:
- 🚫 Не удаляет обычные пробелы (
CHAR(32)). - 🚫 Не работает с неразрывными пробелами (
CHAR(160)). - 🚫 Может удалить нужные символы, если они попадают в диапазон 0–31 (например, символы валют в некоторых кодировках).
7. Проверка результатов: как убедиться, что пробелы удалены
После очистки данных проверьте их на наличие скрытых пробелов:
- 🔍 Визуальный осмотр: Включите отображение непечатаемых символов (
Главная → Абзац → Отобразить все знаки). Пробелы будут показаны как точки, табуляции — как стрелки. - 🔍 Функция ДЛСТР: Сравните длину строки до и после очистки:
=ДЛСТР(A1) ' до очистки=ДЛСТР(СЖПРОБЕЛЫ(A1)) ' после
Если значения различаются, пробелы остались.
- 🔍 Функция КОДСИМВ: Проверьте код первого символа в ячейке:
=КОДСИМВ(ЛЕВСИМВ(A1;1))Если результат
32или160— в начале ячейки пробел.
Если пробелы остались, повторите очистку другим методом (например, Power Query или VBA).
FAQ: Частые вопросы
Почему СЖПРОБЕЛЫ не удаляет пробелы в моей таблице?
Функция СЖПРОБЕЛЫ удаляет только обычные пробелы (CHAR(32)). Если в ячейках неразрывные пробелы (CHAR(160)), табуляции (CHAR(9)) или переносы строк (CHAR(10)), используйте комбинацию ПОДСТАВИТЬ + СЖПРОБЕЛЫ или Power Query.
Как удалить пробелы в тысячах ячеек быстро?
Для массовой очистки используйте:
- Power Query (лучше всего подходит для больших объёмов).
- Макрос VBA (если нужно очистить конкретный диапазон).
- Найти и заменить (
Ctrl+H) для однотипных пробелов.
Функции вроде СЖПРОБЕЛЫ придётся растягивать на весь диапазон и копировать как значения, что медленно для больших таблиц.
Можно ли удалить пробелы при импорте данных в Excel?
Да, при импорте из текстового файла (.txt или .csv):
- В мастере импорта текста на шаге
Формат данных столбцавыберите столбец с пробелами. - Установите формат
Текстовый. - После импорта примените
СЖПРОБЕЛЫили Power Query.
В Power Query можно настроить автоматическую очистку при импорте (см. раздел 3).
Почему после удаления пробелов формулы перестали работать?
Возможные причины:
- 🔹 Формулы ссылались на ячейки с пробелами как на текст (например,
ЕСЛИ(A1=" текст";...)). После очистки сравнение перестало срабатывать. - 🔹 Пробелы были частью разделителей (например, в данных типа
"1 000"после удаления пробела число стало"1000", что могло сломать формат). - 🔹 В ячейках остались невидимые символы (проверьте через
КОДСИМВ).
Решение: обновите ссылки в формулах или верните пробелы-разделители (например, через ПОДСТАВИТЬ).
Как удалить пробелы только в начале или только в конце ячейки?
Используйте комбинацию функций:
- 🔹 Удалить пробелы в начале:
=ЕСЛИ(ЛЕВСИМВ(A1;1)=" ";ПРАВСИМВ(A1;ДЛСТР(A1)-1);A1)Для нескольких пробелов:
=ПРАВСИМВ(A1;ДЛСТР(A1)-НАЙТИ(ПОДСТАВИТЬ(A1;" ";"");"")) - 🔹 Удалить пробелы в конце:
=ЕСЛИ(ПРАВСИМВ(A1;1)=" ";ЛЕВСИМВ(A1;ДЛСТР(A1)-1);A1)
Для неразрывных пробелов замените " " на СИМВОЛ(160).