Лишние пробелы между буквами в ячейках Excel — распространённая проблема, которая портит внешний вид таблиц, мешает сортировке и фильтрации данных, а иногда даже приводит к ошибкам в формулах. Вы могли столкнуться с этим после импорта данных из внешних источников (например, 1С, CRM-систем или веб-скрапинга), при копировании текста из PDF или после неаккуратного ручного ввода. В отличие от очевидных пробелов в начале или конце ячейки, межсимвольные пробелы сложнее заметить невооружённым глазом, но они так же вредят аналитике.
В этой статье мы разберём 5 проверенных методов удаления пробелов между буквами — от простых функций до автоматизации через VBA. Вы узнаете, как исправить данные как в отдельных ячейках, так и во всём столбце за несколько кликов, а также научитесь предотвращать появление пробелов в будущем. Все решения протестированы на Excel 2010–2023 и Office 365, включая веб-версию.
1. Функция TRIM: быстрое решение для стандартных пробелов
Функция TRIM (или СЖПРОБЕЛЫ в русской версии Excel) — первое средство для борьбы с лишними пробелами. Она удаляет все пробелы в начале и конце ячейки, а также сокращает несколько пробелов между словами до одного. Однако у неё есть ограничение: TRIM не убирает пробелы между буквами внутри слова (например, "П р и м е р" останется без изменений).
Как применить:
- В пустой ячейке рядом с исходными данными введите формулу:
=TRIM(A1)или для русской версии:
=СЖПРОБЕЛЫ(A1) - Растяните формулу на весь столбец (потяните за правый нижний угол ячейки).
- Скопируйте результаты (
Ctrl+C) и вставьте их поверх исходных данных черезСпециальная вставка → Значения.
Если TRIM не помог, значит, пробелы замаскированы под неразрывные пробелы (код CHAR(160)) или другие непечатаемые символы. Переходите к следующему методу.
2. Комбинация функций ПЕЧСИМВ + ПОДСТАВИТЬ для неразрывных пробелов
Неразрывные пробелы (вставляются через Ctrl+Shift+Space) и другие "невидимые" символы не удаляются через TRIM. Чтобы их убрать, используйте комбинацию функций CLEAN (ПЕЧСИМВ) и SUBSTITUTE (ПОДСТАВИТЬ).
Формула для удаления всех типов пробелов, включая неразрывные:
=SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(CLEAN(A1), CHAR(160), ""), CHAR(9), ""), " ", "")
Расшифровка:
- 🔹
CLEAN(A1)— удаляет непечатаемые символы. - 🔹
CHAR(160)— неразрывный пробел. - 🔹
CHAR(9)— символ табуляции. - 🔹
" ", ""— заменяет обычные пробелы на пустоту (уберите эту часть, если нужно оставить пробелы между словами).
Для русской версии Excel замените названия функций:
=ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПЕЧСИМВ(A1); СИМВОЛ(160); ""); СИМВОЛ(9); ""); " "; "")
Создайте резервную копию файла|Проверьте тип пробелов (нажмите F2 и посмотрите на курсор)|Примените формулу к одной ячейке для теста|Используйте "Специальную вставку" для сохранения результатов-->
3. Найти и заменить: ручной метод для небольших таблиц
Если пробелы встречаются редко, проще воспользоваться инструментом Найти и заменить (Ctrl+H). Этот способ подходит для:
- 📌 Удаления обычных пробелов (введите пробел в поле "Найти", оставьте "Заменить на" пустым).
- 📌 Замены неразрывных пробелов (скопируйте неразрывный пробел из ячейки или вставьте через
Alt+0160на цифровой клавиатуре). - 📌 Удаления табуляций (используйте
^tв поле "Найти").
Пошаговая инструкция:
- Выделите диапазон ячеек для обработки.
- Нажмите
Ctrl+H. - В поле "Найти" вставьте пробел (или неразрывный пробел).
- Оставьте поле "Заменить на" пустым.
- Нажмите "Заменить всё".
⚠️ Внимание: Этот метод необратимо изменяет исходные данные. Если в тексте должны оставаться пробелы между словами (например, "Иванов Иван"), используйте формулы из предыдущих разделов или замените пробелы на другой символ (например, подчёркивание _).
Как вставить неразрывный пробел в поле "Найти"
Нажмите Ctrl+F, вставьте в любую ячейку неразрывный пробел (через Ctrl+Shift+Space), скопируйте его и вставьте в поле "Найти" в окне замены.
4. Макрос VBA для массовой обработки
Если вам нужно очистить тысячи строк или обрабатывать пробелы регулярно, напишите простой макрос на VBA. Он удалит все пробелы (включая неразрывные) в выбранном диапазоне:
Sub RemoveAllSpaces()
Dim rng As Range
Dim cell As Range
Set rng = Selection
For Each cell In rng
cell.Value = Replace(cell.Value, " ", "")
cell.Value = Replace(cell.Value, Chr(160), "")
cell.Value = Replace(cell.Value, Chr(9), "")
Next cell
End Sub
Как использовать:
- Нажмите
Alt+F11, чтобы открыть редактор VBA. - Вставьте код выше в новый модуль (
Insert → Module). - Выделите диапазон ячеек в Excel и запустите макрос (
F5или черезМакросы → Выполнить).
Для сохранения пробелов только между словами (удалить пробелы внутри слов) используйте этот код:
Sub RemoveInnerSpaces()
Dim rng As Range
Dim cell As Range
Dim i As Integer, newStr As String
Set rng = Selection
For Each cell In rng
newStr = ""
For i = 1 To Len(cell.Value)
If Mid(cell.Value, i, 1) <> " " And Mid(cell.Value, i, 1) <> Chr(160) Then
newStr = newStr & Mid(cell.Value, i, 1)
End If
Next i
cell.Value = newStr
Next cell
End Sub
⚠️ Внимание: Макросы работают только в файлах с расширением .xlsm (с поддержкой макросов). При открытии файла Excel может показать предупреждение о безопасности — разрешите выполнение макросов, если доверяете источнику.
5. Power Query: продвинутая очистка данных
Инструмент Power Query (доступен в Excel 2016 и новее) позволяет очищать данные на уровне импорта. Это полезно, если вы регулярно загружаете данные из внешних источников (например, CSV или баз данных).
Алгоритм действий:
- Выделите исходные данные и перейдите на вкладку
Данные → Из таблицы/диапазона(илиGet & Transform → From Table/Range). - В редакторе Power Query выделите столбец с пробелами.
- Перейдите на вкладку
Преобразованиеи выберитеЗаменить значения. - В поле "Значение для поиска" введите пробел, в "Замена" оставьте пустым. Для неразрывных пробелов используйте
#(00A0). - Нажмите
Закрыть и загрузить, чтобы применить изменения.
Преимущества Power Query:
- 🔄 Очистка применяется автоматически при обновлении данных.
- 📊 Можно создать несколько шагов преобразования (например, сначала удалить пробелы, затем привести текст к верхнему регистру).
- 🔗 Поддерживает многоуровневую отмену (в отличие от макросов).
| Метод | Удаляет обычные пробелы | Удаляет неразрывные пробелы | Сохраняет пробелы между словами | Подходит для больших данных |
|---|---|---|---|---|
TRIM |
✅ Да (в начале/конце) | ❌ Нет | ✅ Да | ✅ Да |
ПОДСТАВИТЬ + ПЕЧСИМВ |
✅ Да | ✅ Да | ❌ Нет (если не настроить) | ✅ Да |
| Найти и заменить | ✅ Да | ✅ Да (вручную) | ❌ Нет | ❌ Нет (ручной труд) |
| Макрос VBA | ✅ Да | ✅ Да | ✅ Да (настраивается) | ✅ Да |
| Power Query | ✅ Да | ✅ Да | ✅ Да (настраивается) | ✅ Да |
6. Профилактика: как избежать пробелов в будущем
Лучший способ борьбы с пробелами — не допускать их появления. Вот проверенные методы профилактики:
- 📥 Импорт данных: При загрузке из CSV или TXT используйте Power Query с предварительной очисткой. В мастере импорта выбирайте опцию "Текстовый формат" для столбцов с пробелами.
- 🖥️ Копирование из веб: Вставляйте текст через
Специальная вставка → Текст(илиCtrl+Alt+V → T), чтобы избежать скрытых символов. - 📝 Ручной ввод: Отключите автозамену пробелов на неразрывные в
Файл → Параметры → Правописание → Параметры автозамены. - 🔄 Шаблоны: Создайте шаблон файла с макросом очистки (из раздела 4) и используйте его как основу для новых таблиц.
Если вы часто работаете с "грязными" данными, создайте пользовательскую функцию в VBA для универсальной очистки:
Function CleanText(rng As Range) As String
Dim str As String
str = rng.Value
str = Replace(str, " ", "")
str = Replace(str, Chr(160), "")
str = Replace(str, Chr(9), "")
str = Trim(str)
CleanText = str
End Function
Теперь в любой ячейке можно использовать =CleanText(A1).
FAQ: Частые вопросы о пробелах в Excel
Почему после применения TRIM пробелы между буквами остались?
TRIM удаляет только пробелы в начале/конце ячейки и сокращает несколько пробелов между словами до одного. Если пробелы внутри слова (например, "П р и м е р"), используйте комбинацию ПОДСТАВИТЬ + ПЕЧСИМВ или макрос из раздела 4.
Как узнать, какой тип пробела в ячейке: обычный или неразрывный?
Два способа:
- Нажмите
F2, чтобы перейти в режим редактирования, и посмотрите на курсор: если пробел широкий — это неразрывный пробел. - Используйте формулу
=КОДСИМВ(СРЗНАЧ(А1;1;1))— если результат160, это неразрывный пробел.
Можно ли удалить пробелы только в начале/конце ячейки, не трогая пробелы внутри?
Да, для этого достаточно функции TRIM (или СЖПРОБЕЛЫ). Она не затрагивает пробелы между буквами внутри слова, а только убирает лишние пробелы по краям и между словами (оставит только по одному).
Почему после замены пробелов на пустоту некоторые ячейки стали пустыми?
Это происходит, если в ячейке были только пробелы (например, " "). После замены они становятся пустыми. Чтобы избежать этого, добавьте проверку на длину строки:
=ЕСЛИ(ДЛСТР(SUBSTITUTE(A1; " "; ""))=0; ""; SUBSTITUTE(A1; " "; ""))
Как автоматизировать очистку пробелов при открытии файла?
Создайте макрос в модуле ThisWorkbook с событием 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
⚠️ Внимание: Этот макрос будет удалять все пробелы во всех листах при каждом открытии файла. Используйте с осторожностью!