Работа с «грязными» данными в Microsoft Excel — одна из самых распространённых задач, с которыми сталкиваются аналитики, бухгалтеры и менеджеры. Часто числа в ячейках «загрязнены» лишними символами: валютами (100$), единицами измерения (50 кг), постфиксами (2023_год) или случайным текстом (Прибыль: 15000). Вручную очищать тысячи строк — неэффективно, а стандартная функция НАЙТИ И ЗАМЕНИТЬ не всегда справляется с задачей. Эта статья поможет разобраться, как быстро и автоматизированно удалить текст из ячеек с цифрами, сохранив только числовые значения.
Мы рассмотрим решения для разных сценариев: от простых формул до написания макросов на VBA. Все методы протестированы на версиях Excel 2010–2023 и Office 365, включая веб-версию. Особое внимание уделено случаям, когда числа хранятся как текст (например, после импорта из CSV или PDF), а также когда требуется сохранить форматирование ячеек.
Если вы никогда не работали с формулами или боитесь испортить данные — не переживайте. В статье есть пошаговые инструкции с картинками, чек-листы и предупреждения о типичных ошибках. Для опытных пользователей мы подготовили продвинутые методы, включая регулярные выражения и пользовательские функции.
Почему стандартные инструменты Excel не всегда работают
Многие пользователи пытаются удалить текст из ячеек с помощью функции НАЙТИ И ЗАМЕНИТЬ (Ctrl+H), но сталкиваются с проблемами:
- 🔹 Непредсказуемый формат данных: текст может стоять до числа (
Цена: 100), после (100 руб.) или быть перемешан с цифрами (A1B2C3). - 🔹 Числа как текст: Excel воспринимает
'100(с апострофом) или100(с пробелом) как текстовые значения, и стандартные математические операции с ними не работают. - 🔹 Потеря форматирования: при замене теряются цвета, границы или условное форматирование ячеек.
- 🔹 Ограничения на символы:
НАЙТИ И ЗАМЕНИТЬне поддерживает регулярные выражения (доступны только в Excel 365 с функциейТЕКСТРАЗД).
Например, если вы попробуете заменить руб. на пустоту, то в ячейке 100 руб. и 50 коп. останется 100 и 50 коп. — это не решит задачу. Или другой случай: в данных есть и 100$, и 100 евро. Заменить оба варианта одной операцией не получится.
⚠️ Внимание: Если в ячейке содержится только текст без цифр (например,Нет данных), то после удаления текста она станет пустой. Это может исказить результаты формул, ссылающихся на эти ячейки (например,СУММпроигнорирует пустые значения).
В следующих разделах мы разберём методы, которые учитывают эти нюансы и гарантированно извлекут числа из любых комбинаций.
Способ 1: Использование функции «Текст по столбцам» (для простых случаев)
Если текст в ячейках имеет фиксированный разделитель (например, пробел, запятую или тире), то самый быстрый способ — воспользоваться инструментом Текст по столбцам. Он подходит для данных типа:
- 📌
100 кг→ разделитель: пробел - 📌
Прибыль-5000→ разделитель: тире - 📌
2023, январь→ разделитель: запятая
Алгоритм действий:
- Выделите столбец с данными.
- Перейдите на вкладку
Данные→Текст по столбцам. - Выберите
С разделителями→Далее. - Укажите нужный разделитель (например, пробел) и снимите галочки с остальных.
- Нажмите
Готово.
Excel разобьёт содержимое ячеек на отдельные столбцы. Вам останется скопировать столбец с числами и вставить его поверх исходных данных (или удалить лишние столбцы).
Убедитесь, что в ячейках нет переносов строк (замените их на пробелы)
Проверьте, что разделитель одинаковый во всех строках
Создайте резервную копию данных (Ctrl+C → вставьте на другой лист)
Удалите пустые строки, чтобы избежать сдвига данных-->
⚠️ Внимание: Если в исходных данных есть ячейки с несколько числами (например,100-200 кг), то после разделения вы получите два столбца:100и200 кг. В этом случае метод не подходит — используйте формулы из следующих разделов.
Преимущество этого способа — сохранение форматирования ячеек (цвета, границы). Недостаток — он работает только с однотипными разделителями.
Способ 2: Формулы для извлечения чисел (универсальный метод)
Когда текст и числа перемешаны произвольным образом (например, A1B2C3 или Прибыль составила 15000$ в 2023), на помощь приходят формулы. Мы рассмотрим три варианта:
- Для чисел в начале/конце ячейки (например,
100 кгилиЦена: 500). - Для чисел в произвольном месте (например,
Артикул X100Y). - Для дробных чисел (например,
3.14 м).
Все формулы вводите в соседний столбец, а затем копируйте значения обратно (через Специальная вставка → Значения).
2.1. Число стоит в начале или конце ячейки
Если число расположено в начале (например, 100 кг), используйте:
=ЛЕВСИМВ(A1;НАЙТИ(" ";A1)-1)
Где " " — разделитель (пробел). Для других разделителей (например, : или -) замените символ в кавычках.
Если число расположено в конце (например, Цена: 500), используйте:
=ПСТР(A1;НАЙТИ(" ";A1)+1;ДЛСТР(A1))
Для автоматического преобразования результата в число оберните формулу в ЗНАЧЕН:
=ЗНАЧЕН(ЛЕВСИМВ(A1;НАЙТИ(" ";A1)-1))
2.2. Число в произвольном месте ячейки
Для извлечения первого числа в ячейке (независимо от его позиции) используйте массивную формулу:
=МИН(ЕСЛИОШИБКА(НАЙТИ(СТРОКА($A$1:$A$10);A1);""))
Завершите ввод нажатием Ctrl+Shift+Enter (в Excel 365 достаточно просто Enter).
Для извлечения всех чисел из ячейки (например, из A1B2C3 получить 123) используйте пользовательскую функцию на VBA (см. Раздел 5).
2.3. Работа с дробными числами
Если в ячейке дробное число с текстом (например, 3.14 м), используйте комбинацию функций:
=ЗНАЧЕН(ПОДСТАВИТЬ(A1;" м";""))
Для замены нескольких постфиксов (например, м, кг, шт.) используйте вложенную ПОДСТАВИТЬ:
=ЗНАЧЕН(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(A1;" м";"");" кг";"");" шт.";""))
| Исходные данные | Формула | Результат |
|---|---|---|
100 кг |
=ЗНАЧЕН(ЛЕВСИМВ(A1;НАЙТИ(" ";A1)-1)) |
100 |
Цена: 500 |
=ЗНАЧЕН(ПСТР(A1;НАЙТИ(":";A1)+1;ДЛСТР(A1))) |
500 |
A1B2C3 |
Пользовательская функция VBA (см. Раздел 5) | 123 |
3.14 м |
=ЗНАЧЕН(ПОДСТАВИТЬ(A1;" м";"")) |
3.14 |
Способ 3: Power Query — мощный инструмент для очистки данных
Power Query (доступен в Excel 2016+ и Office 365) — это самый гибкий инструмент для работы с «грязными» данными. Он позволяет:
- 🔧 Очищать текст по шаблонам (например, удалять все нецифровые символы).
- 🔧 Разделять столбцы по нескольким разделителям одновременно.
- 🔧 Сохранять историю преобразований для повторного использования.
- 🔧 Работать с большими объёмами данных (миллионы строк).
Пошаговая инструкция:
- Выделите исходные данные и нажмите
Данные → Из таблицы/диапазона(в Excel 2016 —Power Query → Из таблицы). - В открывшемся редакторе выберите столбец с данными.
- Перейдите на вкладку
Преобразование→Заменить значения. - В поле
Найтивведите регулярное выражение[^0-9.,-](удалит всё, кроме цифр, точек, запятых и тире). - Оставьте поле
Заменить напустым и нажмитеОК. - Нажмите
Закрыть и загрузить, чтобы вернуть данные в Excel.
Если нужно сохранить только целые числа (удалить дробную часть), используйте замену ,[0-9]* на пустоту (заменит запятую и все символы после неё).
Регулярные выражения для Power Query
[^0-9] — удаляет всё, кроме цифр
[^0-9.,-] — оставляет цифры, точки, запятые и тире (для дробных чисел и диапазонов)
^[а-яА-Яa-zA-Z\s]+ — удаляет текст в начале ячейки (до первого числа)
[а-яА-Яa-zA-Z\s]+$ — удаляет текст в конце ячейки (после последнего числа)
⚠️ Внимание: После очистки в Power Query числа могут отображаться как текст (выровнены по левому краю). Чтобы исправить это, выделите столбец и нажмите Преобразование → Тип данных → Число.
Преимущества Power Query:
- 🔹 Не требует знания формул или VBA.
- 🔹 Преобразования сохраняются и могут быть обновлены при изменении исходных данных.
- 🔹 Поддерживает сложные сценарии (например, извлечение чисел из
JSONилиXML).
Способ 4: Найти и заменить с подстановочными знаками
Если у вас Excel 365 или Excel 2021, то в функции НАЙТИ И ЗАМЕНИТЬ (Ctrl+H) появилась поддержка регулярных выражений. Это позволяет удалять текст по шаблонам без формул.
Инструкция:
- Выделите диапазон с данными.
- Нажмите
Ctrl+H. - В поле
Найтивведите: - Для удаления всего текста кроме чисел:
[!0-9.,-](оставит цифры, точки, запятые и тире). - Для удаления текста до числа:
^[!0-9]*. - Для удаления текста после числа:
[!0-9]*$.
Заменить на пустым.Заменить всё.Для Excel 2010–2019 можно использовать подстановочные знаки:
- 🔹
?— любой одиночный символ. - 🔹
*— любая последовательность символов.
Например, чтобы удалить руб. в конце ячейки, введите в поле Найти: руб.*.
Ограничения метода:
- 🔸 В Excel 2010–2019 нет поддержки регулярных выражений — только подстановочные знаки.
- 🔸 Не работает с ячейками, где числа перемешаны с текстом (например,
A1B2C3). - 🔸 Может случайно удалить части чисел (например, в
100-200удалит тире, и получится100200).
Способ 5: Макросы VBA для сложных случаев
Если предыдущие методы не справились (например, когда числа перемешаны с текстом в произвольном порядке), напишите пользовательскую функцию на VBA. Она извлечёт все цифры из ячейки, независимо от их позиции.
Инструкция:
- Нажмите
Alt+F11, чтобы открыть редактор VBA. - Вставьте новый модуль:
Вставка → Модуль. - Скопируйте следующий код:
Function ExtractNumbers(rng As Range) As DoubleDim str As String
Dim i As Integer
Dim result As String
str = rng.Value
result = ""
For i = 1 To Len(str)
If IsNumeric(Mid(str, i, 1)) Then
result = result & Mid(str, i, 1)
End If
Next i
If result <> "" Then
ExtractNumbers = CDbl(result)
Else
ExtractNumbers = 0
End If
End Function
- Закройте редактор VBA.
- Теперь в Excel можно использовать функцию
=ExtractNumbers(A1).
Эта функция:
- 🔹 Извлекает все цифры из ячейки (например, из
A1B2C3вернёт123). - 🔹 Игнорирует буквы, символы и пробелы.
- 🔹 Возвращает
0, если в ячейке нет цифр.
Для работы с дробными числами модифицируйте код, добавив поддержку точки или запятой:
Function ExtractNumbersDecimal(rng As Range) As Double
Dim str As String
Dim i As Integer
Dim result As String
Dim hasDot As Boolean
str = rng.Value
result = ""
hasDot = False
For i = 1 To Len(str)
If IsNumeric(Mid(str, i, 1)) Then
result = result & Mid(str, i, 1)
ElseIf Mid(str, i, 1) = "." Or Mid(str, i, 1) = "," Then
If Not hasDot Then
result = result & "."
hasDot = True
End If
End If
Next i
If result <> "" Then
ExtractNumbersDecimal = CDbl(result)
Else
ExtractNumbersDecimal = 0
End If
End Function
⚠️ Внимание: Макросы VBA работают только в файлах с расширением .xlsm (с поддержкой макросов). При открытии файла Excel может показать предупреждение о безопасности — разрешите выполнение макросов, если доверяете источнику.
Способ 6: Использование Flash Fill (быстрое заполнение)
Flash Fill (доступен в Excel 2013+) — это инструмент для автоматического заполнения данных по образцу. Он удобен, когда нужно быстро удалить текст из небольшого количества ячеек.
Как использовать:
- В столбце рядом с исходными данными введите желаемый результат для первой строки. Например, если в
A1написано100 кг, а вам нужно100, введите100вB1. - Начните вводить результат для второй строки — Excel предложит автоматически заполнить остальные ячейки.
- Нажмите
Enter, чтобы принять предложение.
Flash Fill распознаёт шаблоны и может:
- 🔹 Удалять текст до/после числа.
- 🔹 Сохранять разделители (например, в
100-200оставит100или200в зависимости от образца). - 🔹 Работать с датами и временем (например, извлекать год из
01.01.2023).
Ограничения:
- 🔸 Требуется ручной ввод образца для первых 1–2 строк.
- 🔸 Не всегда корректно работает с дробными числами (может округлить
3.14до3). - 🔸 Не сохраняет историю действий — при изменении исходных данных придётся повторять процесс.
Совет: если Flash Fill не сработал с первого раза, введите ещё 1–2 примера вручную, чтобы Excel лучше понял шаблон.
Типичные ошибки и как их избежать
При очистке данных пользователи часто сталкиваются с следующими проблемами:
| Ошибка | Причина | Решение |
|---|---|---|
| Числа отображаются как текст (с зелёным треугольником) | Excel не распознаёт формат после очистки | Выделите ячейки → жёлтый значок ! → Преобразовать в число |
Формулы возвращают #ЗНАЧ! |
В ячейке нет чисел, только текст | Добавьте проверку ЕСЛИОШИБКА или ЕПУСТО |
| После замены остались лишние символы | Не учтён регистр или пробелы | Используйте СЖПРОБЕЛЫ и проверяйте регистр в формулах |
| Макрос не работает | Отключены макросы или неправильное расширение файла | Сохраните файл как .xlsm и включите макросы в настройках безопасности |
| Power Query не обновляет данные | Не настроено автоматическое обновление | Щёлкните правой кнопкой по таблице → Обновить |
Критическая ошибка: если вы используете формулы для извлечения чисел, а затем копируете значения обратно поверх исходных данных, то оригинальные данные будут безвозвратно утеряны. Всегда работайте с копией или сохраняйте резервную копию листа.
Ещё одна распространённая проблема — потеря точности при работе с большими числами. Например, если в ячейке 123456789012345, а после очистки формула возвращает 1.23457E+15, значит Excel округлил значение. Чтобы избежать этого, используйте формат ячейки Текстовый или функцию ТЕКСТ:
=ТЕКСТ(ЗНАЧЕН(ЛЕВСИМВ(A1;15));"0")
FAQ: Ответы на частые вопросы
Можно ли удалить текст из ячеек без потери форматирования?
Да, но не всеми способами. Форматирование сохранят:
- 🔹
Текст по столбцам(Способ 1). - 🔹
Найти и заменить(Способ 4). - 🔹 Flash Fill (Способ 6).
Формулы и Power Query создают новые данные, поэтому форматирование придётся применять заново.
Как удалить текст из ячеек с датами (например, "01.01.2023 год")?
Используйте формулу для извлечения даты:
=ДАТАЗНАЧ(ЛЕВСИМВ(A1;10))
Или в Power Query примените преобразование Тип данных → Дата после удаления текста.
Почему после очистки числа отображаются как ######?
Это означает, что ширина столбца недостаточна для отображения числа или отрицательная дата (например, -100 в формате даты). Растяните столбец или проверьте формат ячейки.
Как удалить текст из ячеек в Google Таблицах?
В Google Sheets используйте функцию REGEXEXTRACT:
=REGEXEXTRACT(A1; "[0-9.,]+")
Или комбинацию ARRAYFORMULA с VALUE для преобразования в числа.
Можно ли автоматизировать очистку данных при импорте из CSV?
Да, для этого:
- Создайте шаблон в Power Query с нужными преобразованиями.
- Сохраните запрос и используйте его при каждом импорте.
- Настройте
Автообновлениев параметрах связи.
Также можно записать макрос для импорта и очистки данных одной кнопкой.