Как убрать лишние пробелы в ячейках Excel: от TRIM до Power Query

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

В 90% случаев достаточно стандартной функции TRIM (или её русскоязычного аналога СЖПРОБЕЛЫ), но она не удаляет все типы пробелов. Например, неразрывные пробелы (вставляемые через Ctrl+Shift+Пробел) и символы табуляции останутся. Для сложных случаев потребуются Power Query, макросы VBA или комбинация функций ПОДСТАВИТЬ + СЖПРОБЕЛЫ. Ниже — пошаговые инструкции для каждого метода с примерами и предупреждениями о типичных ошибках.

1. Функция СЖПРОБЕЛЫ (TRIM): базовый метод

Функция СЖПРОБЕЛЫ (англ. TRIM) удаляет все пробелы в начале и конце строки, а также сокращает несколько пробелов между словами до одного. Это самый быстрый способ, но он работает только с обычными пробелами (CHAR(32)) и не затрагивает неразрывные пробелы или табуляции.

Как применить:

  1. В пустой ячейке (например, B1) введите формулу:
    =СЖПРОБЕЛЫ(A1)
  2. Растяните формулу на весь диапазон (двойной клик по маркеру автозаполнения).
  3. Скопируйте результаты (Ctrl+C) и вставьте как значения (ПКМ → Значения) поверх исходных данных.

Ограничения метода:

  • 🚫 Не удаляет неразрывные пробелы (CHAR(160)), которые часто встречаются в данных, скопированных с веб-страниц.
  • 🚫 Не работает с символами табуляции (CHAR(9)) и переносами строк (CHAR(10)).
  • 🚫 Если в ячейке только пробелы, функция вернёт пустую строку.

2. Комбинация ПОДСТАВИТЬ + СЖПРОБЕЛЫ для неразрывных пробелов

Неразрывные пробелы (CHAR(160)) не удаляются функцией СЖПРОБЕЛЫ, так как технически это другой символ. Чтобы их убрать, сначала замените их на обычные пробелы с помощью ПОДСТАВИТЬ, а затем примените СЖПРОБЕЛЫ:

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

Разберём формулу:

  • 🔹 СИМВОЛ(160) — это неразрывный пробел.
  • 🔹 ПОДСТАВИТЬ заменяет все CHAR(160) на обычные пробелы (" ").
  • 🔹 СЖПРОБЕЛЫ удаляет лишние пробелы в начале/конце и между словами.

Если в данных есть и табуляции (CHAR(9)), и переносы строк (CHAR(10)), используйте вложенные ПОДСТАВИТЬ:

=СЖПРОБЕЛЫ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(A1;СИМВОЛ(160);" ");СИМВОЛ(9);" ");СИМВОЛ(10);" "))
📊 Какой тип пробелов чаще всего портит ваши данные в Excel?
Обычные пробелы (CHAR(32))
Неразрывные пробелы (CHAR(160))
Табуляции (CHAR(9))
Переносы строк (CHAR(10))

3. Power Query: удаление всех типов пробелов

Power QueryExcel 2016+ и Office 365) — самый мощный инструмент для очистки данных. Он удаляет все типы пробелов, включая неразрывные, табуляции и переносы строк, а также позволяет автоматизировать процесс для больших таблиц.

Пошаговая инструкция:

  1. Выделите исходный диапазон данных.
  2. Перейдите на вкладку ДанныеИз таблицы/диапазона (если данные не в таблице, Excel предложит создать её).
  3. В открывшемся редакторе Power Query выделите столбец с пробелами.
  4. На вкладке Преобразование выберите Формат → Обрезка (удалит пробелы в начале/конце) → затем Заменить значения:
    • 🔹 В поле Найти введите (пробел).
    • 🔹 В поле Заменить на оставьте пустым.
    • 🔹 Нажмите Заменить все.
  • Повторите шаг 4 для неразрывных пробелов: в поле Найти вставьте символ неразрывного пробела (скопируйте его из ячейки с проблемой или используйте 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

    Как использовать:

    1. Нажмите Alt+F11, чтобы открыть редактор VBA.
    2. Вставьте код в новый модуль (Вставка → Модуль).
    3. Выделите диапазон ячеек в 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) Оставить пустым

    Порядок действий:

    1. Выделите диапазон ячеек.
    2. Нажмите Ctrl+H.
    3. В поле Найти вставьте символ из таблицы выше.
    4. Оставьте поле Заменить на пустым.
    5. Нажмите Заменить все.
    6. Повторите для каждого типа пробелов.
    ⚠️ Внимание: Замена ^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.

    Как удалить пробелы в тысячах ячеек быстро?

    Для массовой очистки используйте:

    1. Power Query (лучше всего подходит для больших объёмов).
    2. Макрос VBA (если нужно очистить конкретный диапазон).
    3. Найти и заменить (Ctrl+H) для однотипных пробелов.

    Функции вроде СЖПРОБЕЛЫ придётся растягивать на весь диапазон и копировать как значения, что медленно для больших таблиц.

    Можно ли удалить пробелы при импорте данных в Excel?

    Да, при импорте из текстового файла (.txt или .csv):

    1. В мастере импорта текста на шаге Формат данных столбца выберите столбец с пробелами.
    2. Установите формат Текстовый.
    3. После импорта примените СЖПРОБЕЛЫ или 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).