Работа с данными в Microsoft Excel часто требует предварительной очистки: лишние пробелы, невидимые символы переноса строки, случайные кавычки или точки — всё это мешает анализу, сортировке и использованию функций. Например, при импорте данных из CSV или PDF в ячейках могут появиться артефакты вроде NBSP (неразрывный пробел) или CHAR(10) (символ перевода строки). Без очистки такие данные невозможно корректно обработать формулами ВПР или СУММЕСЛИ.
В этой статье вы найдёте 7 практических методов удаления лишних символов — от ручных способов до автоматизации с помощью Power Query и VBA. Мы разберём, как убрать:
- 🔹 Пробелы (ведущие, завершающие, двойные)
- 🔹 Невидимые символы (табуляция, перевод строки,
NBSP) - 🔹 Спецсимволы (кавычки, скобки, знаки валют)
- 🔹 Непечатаемые знаки (из баз данных или веб-скрапинга)
К каждому методу прилагаются готовые формулы и шаблоны, которые можно скопировать и адаптировать под свои задачи.
1. Удаление пробелов: функции СЖПРОБЕЛЫ, ПЕЧСИМВ и TRIM
Самая распространённая проблема — лишние пробелы. Они бывают трёх типов:
- 📌 Ведущие (в начале ячейки:
" текст") - 📌 Завершающие (в конце:
"текст ") - 📌 Множественные между словами:
"текст пример"
Для их удаления в Excel есть встроенные функции.
Функция СЖПРОБЕЛЫ (или TRIM в английской версии) удаляет все пробелы, кроме одиночных между словами. Пример использования:
=СЖПРОБЕЛЫ(A1)
Ограничение: СЖПРОБЕЛЫ не удаляет неразрывные пробелы (CHAR(160)), которые часто встречаются при копировании данных из веб-страниц. Для них потребуется комбинация с ПОДСТАВИТЬ.
Если нужно удалить все пробелы (включая одиночные), используйте ПЕЧСИМВ с фильтром:
=ПЕЧСИМВ(A1; " ")
⚠️ Внимание: Эта формула удалит все пробелы, включая необходимые между словами. Применяйте её только для данных типа артикулов или кодов.
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) — мощный инструмент для массовой очистки данных. Он позволяет удалить лишние символы в тысячах строк за несколько кликов.
Пошаговая инструкция:
- Выделите диапазон данных и перейдите на вкладку
Данные → Из таблицы/диапазона(илиGet Data → From Table/Range). - В открывшемся редакторе Power Query выделите столбец, который нужно очистить.
- На вкладке
Преобразование(Transform) выберите:- 🔧
Очистить → Обрезать(удалит пробелы в начале/конце) - 🔧
Заменить значения(для удаления конкретных символов) - 🔧
Разделить столбец → По разделителю(если символы-разделители, например,;)
- 🔧
Закрыть и загрузить (Close & Load).Преимущества Power Query:
- 🔹 Обрабатывает миллионы строк без замедления
- 🔹 Сохраняет шаги очистки для повторного использования
- 🔹 Позволяет объединять данные из нескольких источников
☑️ Подготовка данных в Power Query
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
Как использовать:
- Нажмите
Alt + F11, чтобы открыть редактор VBA. - Вставьте код в новый модуль (
Insert → Module). - Вернитесь в Excel, выделите диапазон ячеек и запустите макрос (
Alt + F8 → CleanSpecialChars → Run).
⚠️ Внимание: Перед запуском макроса обязательно сохраните файл — изменения применяются сразу и не отменяются через Ctrl+Z.
Чтобы удалить только определённые символы (например, newStr = newStr & Mid(cell.Value, i, 1) End If Это оставит в ячейке все символы, кроме Как модифицировать макрос для удаления конкретных символов?
$ и %), замените условие в цикле на:If Mid(cell.Value, i, 1) <> "$" And Mid(cell.Value, i, 1) <> "%" Then
$ и %.
6. Регулярные выражения (Regex) в Excel
Excel не поддерживает регулярные выражения (Regex) напрямую, но их можно использовать через:
- 🔧 Power Query (в колонке
Преобразование → Заменить значенияесть опцияИспользовать регулярные выражения) - 🔧 VBA с подключением библиотеки
VBScript.RegExp - 🔧 Надстройки (например, Kutools for Excel)
Пример в Power Query:
Чтобы удалить все символы, кроме букв и цифр, в колонке Column1:
- Выделите столбец →
Преобразование → Заменить значения. - В поле
Найтивведите regex-выражение:[^a-zA-Z0-9] - В поле
Заменить наоставьте пустую строку. - Отметьте галочку
Использовать регулярные выражения.
Пример на 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:
- Импортируйте файл через
Данные → Из текстового/CSV-файла. - В редакторе Power Query примените очистку (см. раздел 4 статьи).
- Сохраните шаги преобразования, чтобы при следующем импорте данные очищались автоматически.
Также можно настроить Текст по столбцам (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).