Удаление лишних символов в Excel: от пробелов до непечатаемых знаков

Работа с данными в Microsoft Excel часто требует предварительной очистки: лишние пробелы, невидимые символы переноса строки, случайные кавычки или точки — всё это мешает анализу, сортировке и использованию функций. Например, при импорте данных из CSV или PDF в ячейках могут появиться артефакты вроде NBSP (неразрывный пробел) или CHAR(10) (символ перевода строки). Без очистки такие данные невозможно корректно обработать формулами ВПР или СУММЕСЛИ.

В этой статье вы найдёте 7 практических методов удаления лишних символов — от ручных способов до автоматизации с помощью Power Query и VBA. Мы разберём, как убрать:

  • 🔹 Пробелы (ведущие, завершающие, двойные)
  • 🔹 Невидимые символы (табуляция, перевод строки, NBSP)
  • 🔹 Спецсимволы (кавычки, скобки, знаки валют)
  • 🔹 Непечатаемые знаки (из баз данных или веб-скрапинга)

К каждому методу прилагаются готовые формулы и шаблоны, которые можно скопировать и адаптировать под свои задачи.

1. Удаление пробелов: функции СЖПРОБЕЛЫ, ПЕЧСИМВ и TRIM

Самая распространённая проблема — лишние пробелы. Они бывают трёх типов:

  • 📌 Ведущие (в начале ячейки: " текст")
  • 📌 Завершающие (в конце: "текст ")
  • 📌 Множественные между словами: "текст пример"

Для их удаления в Excel есть встроенные функции.

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

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

Если нужно удалить все пробелы (включая одиночные), используйте ПЕЧСИМВ с фильтром:

=ПЕЧСИМВ(A1; " ")
⚠️ Внимание: Эта формула удалит все пробелы, включая необходимые между словами. Применяйте её только для данных типа артикулов или кодов.
📊 Какой тип пробелов вам чаще всего мешает в Excel?
Ведущие/завершающие
Множественные между словами
Неразрывные (из веб-страниц)
Другие символы

2. Удаление невидимых символов: CHAR(10), CHAR(13), NBSP

Невидимые символы — настоящая головная боль при импорте данных. Они появляются при копировании из Word, PDF или баз данных. Распространённые примеры:

  • 📄 CHAR(10) — перевод строки (Line Feed)
  • 📄 CHAR(13) — возврат каретки (Carriage Return)
  • 📄 CHAR(160) — неразрывный пробел (NBSP)
  • 📄 CHAR(9) — табуляция

Их нельзя увидеть в ячейке, но они ломают сортировку и функции поиска.

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

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

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

=ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(A1; СИМВОЛ(10); ""); СИМВОЛ(13); ""); СИМВОЛ(160); " "); СИМВОЛ(9); " ")

Как найти невидимые символы? Используйте функцию КОДСИМВ для анализа. Например, введите в соседней ячейке:

=КОДСИМВ(ЛЕВСИМВ(A1))

Если результат — 160, значит в начале ячейки есть NBSP.

3. Удаление спецсимволов: кавычки, скобки, знаки валют

Спецсимволы (например, ", $, %, ( )) часто мешают при конкатенации данных или экспорте в другие системы. Их можно удалить selectively (выборочно) или полностью.

Метод 1. Удаление конкретного символа

Используйте ПОДСТАВИТЬ для замены символа на пустую строку:

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

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

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

Метод 2. Сохранение только букв и цифр

Если нужно оставить в ячейке только буквенно-цифровые символы, используйте формулу массива (вводится через Ctrl+Shift+Enter в старых версиях Excel):

=СЦЕПИТЬ(ЕСЛИ(КОДСИМВ(ПСТР(A1;СТРОКА(ДВССЫЛ("1:"&ДЛСТР(A1)));1))>=48;

ЕСЛИ(КОДСИМВ(ПСТР(A1;СТРОКА(ДВССЫЛ("1:"&ДЛСТР(A1)));1))<=57;

ПСТР(A1;СТРОКА(ДВССЫЛ("1:"&ДЛСТР(A1)));1);

ЕСЛИ(ИЛИ(КОДСИМВ(ПСТР(A1;СТРОКА(ДВССЫЛ("1:"&ДЛСТР(A1)));1))>=65;

КОДСИМВ(ПСТР(A1;СТРОКА(ДВССЫЛ("1:"&ДЛСТР(A1)));1))<=90);

КОДСИМВ(ПСТР(A1;СТРОКА(ДВССЫЛ("1:"&ДЛСТР(A1)));1))>=97;

КОДСИМВ(ПСТР(A1;СТРОКА(ДВССЫЛ("1:"&ДЛСТР(A1)));1))<=122);

ПСТР(A1;СТРОКА(ДВССЫЛ("1:"&ДЛСТР(A1)));1);""));"")

⚠️ Внимание: В Excel 365 и Excel 2021 эту формулу можно вводить без Ctrl+Shift+Enter, так как поддержка динамических массивов встроена по умолчанию.

4. Power Query: очистка данных без формул

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

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

  1. Выделите диапазон данных и перейдите на вкладку Данные → Из таблицы/диапазона (или Get Data → From Table/Range).
  2. В открывшемся редакторе Power Query выделите столбец, который нужно очистить.
  3. На вкладке Преобразование (Transform) выберите:
    • 🔧 Очистить → Обрезать (удалит пробелы в начале/конце)
    • 🔧 Заменить значения (для удаления конкретных символов)
    • 🔧 Разделить столбец → По разделителю (если символы-разделители, например, ;)
  • После очистки нажмите Закрыть и загрузить (Close & Load).
  • Преимущества Power Query:

    • 🔹 Обрабатывает миллионы строк без замедления
    • 🔹 Сохраняет шаги очистки для повторного использования
    • 🔹 Позволяет объединять данные из нескольких источников

    ☑️ Подготовка данных в Power Query

    Выполнено: 0 / 5

    5. Макросы VBA для автоматизации очистки

    Если вам регулярно приходится очищать данные по одним и тем же правилам, VBA-макросы сэкономят часы работы. Ниже приведён код для удаления всех неалфавитных символов в выбранном диапазоне:

    Sub CleanSpecialChars()
    

    Dim rng As Range

    Dim cell As Range

    Dim i As Integer

    Dim newStr As String

    Set rng = Selection 'Выделенный диапазон

    For Each cell In rng

    newStr = ""

    For i = 1 To Len(cell.Value)

    Dim charCode As Integer

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

    'Оставляем только буквы (A-Z, a-z), цифры (0-9) и пробел

    If (charCode >= 48 And charCode <= 57) Or _

    (charCode >= 65 And charCode <= 90) Or _

    (charCode >= 97 And charCode <= 122) Or _

    charCode = 32 Then

    newStr = newStr & Mid(cell.Value, i, 1)

    End If

    Next i

    cell.Value = newStr

    Next cell

    End Sub

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

    1. Нажмите Alt + F11, чтобы открыть редактор VBA.
    2. Вставьте код в новый модуль (Insert → Module).
    3. Вернитесь в Excel, выделите диапазон ячеек и запустите макрос (Alt + F8 → CleanSpecialChars → Run).
    ⚠️ Внимание: Перед запуском макроса обязательно сохраните файл — изменения применяются сразу и не отменяются через Ctrl+Z.

    Как модифицировать макрос для удаления конкретных символов?

    Чтобы удалить только определённые символы (например, $ и %), замените условие в цикле на:

    If Mid(cell.Value, i, 1) <> "$" And Mid(cell.Value, i, 1) <> "%" Then
    

    newStr = newStr & Mid(cell.Value, i, 1)

    End If

    Это оставит в ячейке все символы, кроме $ и %.

    6. Регулярные выражения (Regex) в Excel

    Excel не поддерживает регулярные выражения (Regex) напрямую, но их можно использовать через:

    • 🔧 Power Query (в колонке Преобразование → Заменить значения есть опция Использовать регулярные выражения)
    • 🔧 VBA с подключением библиотеки VBScript.RegExp
    • 🔧 Надстройки (например, Kutools for Excel)

    Пример в Power Query:

    Чтобы удалить все символы, кроме букв и цифр, в колонке Column1:

    1. Выделите столбец → Преобразование → Заменить значения.
    2. В поле Найти введите regex-выражение: [^a-zA-Z0-9]
    3. В поле Заменить на оставьте пустую строку.
    4. Отметьте галочку Использовать регулярные выражения.

    Пример на VBA с Regex:

    Скопируйте этот код в модуль для удаления всех символов, кроме букв, цифр и пробелов:

    Sub CleanWithRegex()
    

    Dim rng As Range

    Dim cell As Range

    Dim regex As Object

    Set regex = CreateObject("VBScript.RegExp")

    regex.Pattern = "[^a-zA-Z0-9 ]" 'Оставляем буквы, цифры и пробелы

    regex.Global = True

    For Each cell In Selection

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

    Next cell

    End Sub

    7. Проверка результатов и типичные ошибки

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

    Метод проверки Формула/действие Что проверяет
    Длина строки =ДЛСТР(A1) Убедиться, что количество символов уменьшилось
    Поиск пробелов =НАЙТИ(" ";A1) Проверяет наличие пробелов (вернёт ошибку, если пробелов нет)
    Код первого символа =КОДСИМВ(ЛЕВСИМВ(A1)) Показывает код первого символа (160 = неразрывный пробел)
    Визуальный осмотр Включите Главная → Режим отображения формул Позволяет увидеть скрытые символы вроде CHAR(10)

    Типичные ошибки и решения:

    • 🚫 Формулы не работают: Убедитесь, что ячейка содержит текст, а не ошибку (#ЗНАЧ!). Используйте =ЕТЕКСТ(A1) для проверки.
    • 🚫 Данные не изменились: Проверьте, не защищён ли лист от редактирования (Рецензирование → Снять защиту листа).
    • 🚫 Макрос не запускается: Включите поддержку макросов в Файл → Параметры → Центр управления безопасностью → Параметры центра управления безопасностью → Настройки макросов.

    FAQ: Частые вопросы по очистке данных в Excel

    ❓ Как удалить пробелы только в начале и конце ячейки, не трогая пробелы между словами?

    Используйте функцию СЖПРОБЕЛЫ (или TRIM):

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

    Она удаляет только ведущие/завершающие пробелы и заменяет множественные пробелы между словами на одиночные.

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

    Это означает, что ширина столбца недостаточна для отображения содержимого. Растяните столбец или измените формат ячейки на Текстовый (Главная → Формат → Формат ячеек → Текстовый). Также проверьте, не содержит ли ячейка дату в некорректном формате.

    ❓ Как удалить все символы после определённого знака (например, после -)?

    Используйте комбинацию функций ЛЕВСИМВ и НАЙТИ:

    =ЛЕВСИМВ(A1; НАЙТИ("-"; A1)-1)

    Если знак может отсутствовать, добавьте проверку на ошибку:

    =ЕСЛИОШИБКА(ЛЕВСИМВ(A1; НАЙТИ("-"; A1)-1); A1)

    ❓ Можно ли очистить данные при импорте из CSV?

    Да, используйте Power Query:

    1. Импортируйте файл через Данные → Из текстового/CSV-файла.
    2. В редакторе Power Query примените очистку (см. раздел 4 статьи).
    3. Сохраните шаги преобразования, чтобы при следующем импорте данные очищались автоматически.

    Также можно настроить Текст по столбцам (Data → Text to Columns) с разделителями.

    ❓ Как удалить все непечатаемые символы сразу?

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

    Function CleanNonPrintable(rng As Range) As String
    

    Dim i As Integer

    Dim result As String

    result = ""

    For i = 1 To Len(rng.Value)

    Dim charCode As Integer

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

    'Оставляем только печатаемые символы (коды 32-126)

    If charCode >= 32 And charCode <= 126 Then

    result = result & Mid(rng.Value, i, 1)

    End If

    Next i

    CleanNonPrintable = result

    End Function

    Затем используйте её в ячейке как обычную формулу: =CleanNonPrintable(A1).