Проверка пробелов в Excel: от простых до скрытых символов

Лишние пробелы в ячейках Excel — одна из самых распространённых проблем при работе с текстом. Они портят сортировку, искажают результаты функций СЧЁТЕСЛИ или ПОИСКПОЗ, а иногда делают данные визуально неаккуратными. Например, вы скопировали данные из веб-страницы или другого источника, а в ячейках оказались невидимые пробелы перед текстом или между словами. Или хуже — неразрывные пробелы (CHAR(160)), которые не удаляются стандартной функцией СЖПРОБЕЛЫ.

В этой статье вы найдёте 7 проверенных методов, как выявить и устранить пробелы любого типа: от очевидных двойных до скрытых символов Юникода. Мы разберём формулы, инструменты Excel и даже макросы для автоматизации. А в конце — FAQ с ответами на частые вопросы о пробелах в таблицах.

Если вы часто работаете с текстом в Excel, сохраните эту статью в закладки — она пригодится при очистке данных из внешних источников или перед анализом больших массивов.

1. Как найти обычные пробелы с помощью функции ЛЕН

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

Формула для проверки:

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

Если результат больше 0, в ячейке есть лишние пробелы. Например, для текста " Привет мир " формула вернёт 5 (2 пробела в начале, 2 между словами и 1 в конце).

  • 🔍 Преимущество: работает для всех типов обычных пробелов (CHAR(32)).
  • ⚠️ Ограничение: не находит неразрывные пробелы (CHAR(160)) и другие невидимые символы.
  • 📌 Совет: примените условное форматирование, чтобы выделить ячейки с лишними пробелами красным.

Чтобы автоматически удалить найденные пробелы, используйте функцию СЖПРОБЕЛЫ в соседнем столбце или замените данные через Найти и заменить (Ctrl+H).

2. Поиск неразрывных пробелов (CHAR(160))

Неразрывные пробелы (CHAR(160)) — это скрытые символы, которые часто попадают в Excel при копировании текста из веб-страниц или Word. Они выглядят как обычные пробелы, но не удаляются функцией СЖПРОБЕЛЫ и могут ломать сортировку.

Чтобы их найти, используйте формулу:

=ЕСЛИ(НАЙТИ(СИМВОЛ(160);A1);"Есть неразрывный пробел";"Нет")

Если формула вернёт "Есть неразрывный пробел", замените их на обычные пробелы через Найти и заменить:

  1. Нажмите Ctrl+H.
  2. В поле Найти введите Alt+0160 (удерживая Alt, наберите 0160 на цифровой клавиатуре).
  3. В поле Заменить на введите обычный пробел.
  4. Нажмите Заменить все.
⚠️ Внимание: Если у вас ноутбук без цифровой клавиатуры, скопируйте неразрывный пробел из этой статьи (между кавычками): " " и вставьте в поле Найти.

Для массовой замены в больших файлах удобнее использовать макрос VBA (см. раздел 6).

3. Проверка двойных пробелов между словами

Двойные пробелы между словами — частая проблема при импорте данных из старых систем или текстовых файлов. Чтобы их найти, используйте формулу с функцией ПОДСТАВИТЬ:

=ЕСЛИ(ДЛСТР(A1)-ДЛСТР(ПОДСТАВИТЬ(A1;"  ";" "))>0;"Есть двойные пробелы";"Нет")

Эта формула сравнивает длину текста до и после удаления двойных пробелов. Если разница больше 0 — пробелы найдены.

  • 🔄 Альтернатива: используйте регулярные выражения в Power Query (см. раздел 5).
  • 📊 Пример: текст "Hello world" содержит 3 пробела между словами — формула вернёт "Есть двойные пробелы".

Чтобы удалить все двойные пробелы сразу, примените формулу:

=ПОДСТАВИТЬ(A1;"  ";" ")

Но учтите: если в тексте три и более пробелов подряд, потребуется несколько замен или цикл в VBA.

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

4. Использование функции ПЕЧСИМВ для визуализации пробелов

Функция ПЕЧСИМВ (или CODE в английской версии) помогает преобразовать символы в их коды, включая пробелы. Это полезно для обнаружения невидимых символов, таких как табуляции (CHAR(9)) или неразрывные пробелы (CHAR(160)).

Формула для анализа первого символа в ячейке:

=ПЕЧСИМВ(ЛЕВСИМВ(A1))

Если результат — 32, это обычный пробел; если 160 — неразрывный. Чтобы проверить все символы в ячейке, используйте VBA или Power Query.

СимволКод (CHAR)Описание
Обычный пробел32Стандартный пробел, удаляется СЖПРОБЕЛЫ
Неразрывный пробел160Не удаляется СЖПРОБЕЛЫ, требует ручной замены
Табуляция9Встречается при копировании из текстовых файлов
Перевод строки10Символ новой строки (LF)

Для анализа всей ячейки создайте пользовательскую функцию VBA:

Function ShowCharCodes(rng As Range) As String

Dim i As Integer, charCode As Integer

For i = 1 To Len(rng.Value)

charCode = Asc(Mid(rng.Value, i, 1))

ShowCharCodes = ShowCharCodes & charCode & ", "

Next i

ShowCharCodes = Left(ShowCharCodes, Len(ShowCharCodes) - 2)

End Function

Теперь введите в ячейке =ShowCharCodes(A1), чтобы увидеть коды всех символов.

5. Очистка пробелов с помощью Power Query

Power Query (или Get & Transform в новых версиях Excel) — мощный инструмент для очистки данных, включая пробелы. Вот как им пользоваться:

  1. Выделите диапазон данных и перейдите на вкладку ДанныеИз таблицы/диапазона.
  2. В редакторе Power Query выберите столбец с текстом → ПреобразоватьФорматОчиститьОбрезать (удаляет пробелы в начале и конце).
  3. Для замены неразрывных пробелов: Заменить значения → в поле Значение для поиска введите   (неразрывный пробел), в поле Заменить на — обычный пробел.
  4. Нажмите Закрыть и загрузить.

Для удаления всех лишних пробелов (включая двойные) используйте язык M в Power Query:

= Table.TransformColumns(#"Предыдущий шаг", {{"ВашСтолбец", each Text.Clean(_), type text}})

Функция Text.Clean в Power Query удаляет все непечатаемые символы, включая неразрывные пробелы и символы табуляции.

Выгрузить данные в Power Query|Обрезать пробелы (Trim)|Заменить CHAR(160) на CHAR(32)|Применить Text.Clean для глубокой очистки|Загрузить данные обратно в Excel-->

6. Автоматизация с помощью VBA: макрос для удаления всех типов пробелов

Если вам часто приходится очищать пробелы, создайте макрос VBA, который удалит:

  • Пробелы в начале и конце (Trim).
  • Неразрывные пробелы (Chr(160)).
  • Двойные пробелы между словами.

Код макроса:

Sub CleanSpaces()

Dim rng As Range, cell As Range

Set rng = Selection 'или укажите диапазон: Range("A1:A100")

For Each cell In rng

If Not IsEmpty(cell) Then

' Замена неразрывных пробелов на обычные

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

' Удаление лишних пробелов

cell.Value = WorksheetFunction.Trim(cell.Value)

' Замена двойных пробелов на одиночные

Do While InStr(cell.Value, " ") > 0

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

Loop

End If

Next cell

End Sub

Чтобы запустить макрос:

  1. Нажмите Alt+F11, чтобы открыть редактор VBA.
  2. Вставьте код в новый модуль (InsertModule).
  3. Вернитесь в Excel, выделите диапазон и запустите макрос через Макросы (Alt+F8).
⚠️ Внимание: Перед запуском макроса сохраните файл с расширением .xlsm (с поддержкой макросов), иначе код не сохранится.
Как удалить пробелы в формулах (не в тексте!)

Если пробелы появляются в результатах формул (например, =A1&B1), используйте функцию СЖПРОБЕЛЫ внутри формулы:

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

Это предотвратит появление лишних пробелов при объединении ячеек.

7. Проверка пробелов с помощью условного форматирования

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

  1. Выделите диапазон данных.
  2. Перейдите на вкладку ГлавнаяУсловное форматированиеСоздать правило.
  3. Выберите Использовать формулу для определения форматируемых ячеек.
  4. Введите формулу:
    =ИЛИ(ЛЕВСИМВ(A1)=" ";ПРАВСИМВ(A1)=" ")
  5. Задайте формат (например, красный фон) и нажмите ОК.

Для поиска неразрывных пробелов используйте формулу:

=НАЙТИ(СИМВОЛ(160);A1)

Это позволит быстро найти все проблемные ячейки и исправить их вручную или с помощью макроса.

FAQ: Частые вопросы о пробелах в Excel

Почему функция СЖПРОБЕЛЫ не удаляет все пробелы?

СЖПРОБЕЛЫ удаляет только:

  • Пробелы в начале и конце текста.
  • Двойные пробелы между словами (оставляет один).

Она не удаляет:

  • Неразрывные пробелы (CHAR(160)).
  • Табуляции (CHAR(9)) или переводы строк (CHAR(10)).
  • Пробелы внутри текста, если они не двойные.

Для полной очистки комбинируйте СЖПРОБЕЛЫ с ПОДСТАВИТЬ или используйте макрос из раздела 6.

Как найти ячейки, где текст начинается или заканчивается пробелом?

Используйте формулы:

  • Для пробела в начале: =ЛЕВСИМВ(A1)=" "
  • Для пробела в конце: =ПРАВСИМВ(A1)=" "

Примените их в условном форматировании или фильтре, чтобы выделить проблемные ячейки.

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

Да, с помощью макроса VBA (см. раздел 6) или Power Query (раздел 5). Альтернативный способ:

  1. Выделите все данные (Ctrl+A).
  2. Нажмите Ctrl+H (Найти и заменить).
  3. В поле Найти введите пробел, в поле Заменить на оставьте пустым.
  4. Нажмите Заменить все (но это удалит все пробелы, включая нужные!).

Для избирательного удаления используйте формулы или Power Query.

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

Данные из PDF часто содержат:

  • Неразрывные пробелы (CHAR(160)).
  • Символы табуляции (CHAR(9)).
  • Случайные переводы строк (CHAR(10)).

Используйте комбинацию:

=СЖПРОБЕЛЫ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(A1;СИМВОЛ(160);" ");СИМВОЛ(9);" ");СИМВОЛ(10);" "))

Для больших файлов лучше применить Power Query с функцией Text.Clean.

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

Возможные причины:

  • Остались невидимые символы (проверьте с помощью ПЕЧСИМВ).
  • В тексте есть разные регистры (например, "текст" vs "Текст"). Используйте ПРОПИСН или СТРОЧН для унификации.
  • Ячейки имеют разные форматы (текст vs число). Преобразуйте все в текст с помощью =ТЕКСТ(A1;"@").

Также проверьте наличие непечатаемых символов с помощью формулы:

=ЕСЛИ(ДЛСТР(A1)=ДЛСТР(СЖПРОБЕЛЫ(A1));"Чисто";"Есть скрытые символы")