Как убрать буквы в Excel и оставить только цифры: полное руководство

Работа с неструктурированными данными в Microsoft Excel часто требует предварительной очистки. Одна из самых распространённых задач — удаление буквенных символов при сохранении числовых значений. Например, когда в ячейках содержатся смешанные данные типа "Артикул 123АБВ", "Цена: 450 руб." или "ID-789-XYZ", а вам нужны только цифры 123, 450 и 789.

В этой статье мы разберём 7 проверенных способов, как извлечь числа из текста в Excel — от простых функций до автоматизированных макросов. Вы узнаете, какой метод выбрать в зависимости от объёма данных, их структуры и вашего уровня владения программой. А ещё научитесь избегать типичных ошибок, которые приводят к потере информации или неправильным результатам.

1. Использование функции ПОИСК + ПОДСТАВИТЬ для простых случаев

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

Пример: из строки "Товар_567" нужно извлечь 567. Формула будет такой:

=ПОДСТАВИТЬ(A1;"Товар_";"")

Для более сложных случаев, когда буквы разбросаны по всей строке, этот метод не подойдёт. Зато он идеален для единообразных данных с повторяющимися префиксами/суффиксами. Например:

  • 📌 "Код: 12345"=ПОДСТАВИТЬ(A1;"Код: ";"")
  • 📌 "ID-987-X"=ПОДСТАВИТЬ(ПОДСТАВИТЬ(A1;"ID-";"");"-X";"")
  • 📌 "Цена 2000 руб."=ПОДСТАВИТЬ(ПОДСТАВИТЬ(A1;"Цена ";"");" руб.";"")
⚠️ Внимание: Функция ПОДСТАВИТЬ чувствительна к регистру! Если в данных встречаются буквы в разном регистре (например, "Id-123" и "ID-456"), используйте ПОДСТАВИТЬ для каждого варианта отдельно или применяйте НАЙТИ с параметром регистронезависимого поиска.
📊 Какой способ очистки данных вы используете чаще?
Формулы Excel
Power Query
Макросы VBA
Ручной ввод
Другой

2. Формула массива для извлечения всех цифр из строки

Когда буквы и цифры перемешаны в произвольном порядке (например, "A1B2C3D4"), поможет формула массива. Она последовательно проверяет каждый символ и возвращает только цифровые:

=ТЕКСТСОЕДИНИТЬ(ЕСЛИ(ЕЧИСЛО(ЗНАЧЕН(СРЕДЗНАЧ(A1;СТРОКА($1:$10);1)));СРЕДЗНАЧ(A1;СТРОКА($1:$10);1);"");ИСТИНА)

Как это работает:

  1. СТРОКА($1:$10) — создаёт массив чисел от 1 до 10 (максимальная длина строки).
  2. СРЕДЗНАЧ — извлекает каждый символ по очереди.
  3. ЗНАЧЕН + ЕЧИСЛО — проверяет, является ли символ числом.
  4. ТЕКСТСОЕДИНИТЬ — собирает все цифры в одну строку.

Для Excel 2019 и новее используйте ТЕКСТСОЕДИНИТЬ, для старых версий — СЦЕПИТЬ с нажатием Ctrl+Shift+Enter.

Почему формула не работает в Excel 2016?

В Excel 2016 нет функции ТЕКСТСОЕДИНИТЬ. Замените её на:

=СЦЕПИТЬ(ЕСЛИ(ЕЧИСЛО(ЗНАЧЕН(СРЕДЗНАЧ(A1;СТРОКА($1:$10);1)));СРЕДЗНАЧ(A1;СТРОКА($1:$10);1);""))

И завершите ввод комбинацией Ctrl+Shift+Enter (это формула массива).

3. Power Query: автоматическая очистка больших объёмов данных

Если вам нужно обработать тысячи строк, ручные формулы неэффективны. В этом случае спасёт Power Query — инструмент для преобразования данных, встроенный в Excel 2016 и новее.

Алгоритм действий:

  1. Выделите диапазон с данными → вкладка ДанныеИз таблицы/диапазона.
  2. В открывшемся редакторе Power Query выберите столбец → ПреобразоватьИзвлечьТекст после делителя (если цифры стоят после букв) или Текст перед делителем.
  3. Для извлечения всех цифр используйте Добавить столбецПользовательский столбец с формулой:
    =Text.Select([Column1],{"0".."9"})
  4. Удалите исходный столбец и сохраните изменения.

Power Query сохраняет все шаги преобразования, поэтому при обновлении исходных данных достаточно нажать "Обновить" — и очистка выполнится автоматически.

Выделить исходный диапазон|Загрузить в Power Query|Применить преобразование Text.Select|Удалить лишние столбцы|Сохранить и загрузить-->

4. Макрос VBA для мгновенной очистки

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

Sub УдалитьБуквы()

Dim rng As Range

Dim cell As Range

Dim i As Integer

Dim result As String

Set rng = Selection

For Each cell In rng

result = ""

For i = 1 To Len(cell.Value)

If IsNumeric(Mid(cell.Value, i, 1)) Then

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

End If

Next i

cell.Value = result

Next cell

End Sub

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

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

5. Регулярные выражения (Regex) для сложных шаблонов

Если данные имеют сложную структуру (например, "12.05.2023_Заказ#4567", где нужно оставить только 4567), поможет надстройка для работы с регулярными выражениями. Например, ABLEbits Regex Tools или встроенные функции в Power Query.

Примеры регулярных выражений:

ЗадачаШаблон RegexРезультат
Извлечь все цифры\D (удалить всё, кроме цифр)"A1B2" → "12"
Убрать префикс "ID-"^ID-"ID-123" → "123"
Оставить только число после "#".#(\d+).$ → заменить на $1"Заказ#4567" → "4567"
Удалить все буквы и символы[^0-9]"Цена: 500 руб." → "500"

В Power Query регулярные выражения применяются через Text.Select или Text.Replace. Например:

= Text.Remove([Column1], "[^0-9]")

6. Функция ПЕРЕВЕСТИ + ПОДСТАВИТЬ для кириллических букв

Если в данных используются русские буквы, стандартные функции могут не сработать из-за кодировки. В этом случае поможет комбинация ПЕРЕВЕСТИ + ПОДСТАВИТЬ, которая заменяет кириллические символы на латиницу, а затем удаляет их.

Пример для строки "Привет123":

=ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПЕРЕВЕСТИ(A1;"кириллица";"латиница");"P";"");"r";"");"i";"")

Более универсальный вариант — использовать ПОДСТАВИТЬ с перечислением всех русских букв:

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

Это трудоёмко, но надёжно. Для автоматизации создайте пользовательскую функцию VBA:

Function УбратьКириллицу(rng As Range) As String

Dim i As Integer

Dim result As String

result = rng.Value

For i = 1 To Len(result)

If Asc(Mid(result, i, 1)) < 128 Then ' ASCII-коды кириллицы > 128

УбратьКириллицу = УбратьКириллицу & Mid(result, i, 1)

End If

Next i

End Function

7. Ошибки и решения: почему не получается убрать буквы

Даже с правильными формулами результат может быть неверным. Рассмотрим типичные проблемы и их решения:

ПроблемаПричинаРешение
Формула возвращает #ЗНАЧ!В ячейке пусто или не текстДобавьте проверку ЕПУСТО или ЕТЕКСТ
Цифры обрезаются (например, 123451234)В формуле массива недостаточно строк ($1:$10 вместо $1:$20)Увеличьте диапазон до $1:$100
Буквы остаютсяСимволы не распознаются как буквы (например, греческие или специальные)Используйте КОДСИМВ для проверки ASCII-кодов
Макрос не работаетОтключены макросы в настройках безопасностиВключите макросы в Файл → Параметры → Центр управления безопасностью

Если ни один метод не сработал, проверьте:

  • 🔍 Формат ячеек: данные должны быть в формате Общий или Текстовый, а не Дата.
  • 🔍 Скрытые символы: в строке могут быть пробелы, табуляции или непечатаемые знаки. Используйте =ЧИСТ(A1) для очистки.
  • 🔍 Локаль Excel: в некоторых языковых версиях функции называются иначе (например, SUBSTITUTE вместо ПОДСТАВИТЬ).

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

Можно ли убрать буквы, но оставить знак минус перед числом?

Да. Используйте модифицированную формулу массива:

=ТЕКСТСОЕДИНИТЬ(ЕСЛИ(ИЛИ(ЕЧИСЛО(ЗНАЧЕН(СРЕДЗНАЧ(A1;СТРОКА($1:$10);1)));СРЕДЗНАЧ(A1;СТРОКА($1:$10);1)="-");СРЕДЗНАЧ(A1;СТРОКА($1:$10);1);"");ИСТИНА)

Или в Power Query:

= Text.Remove([Column1], "[^0-9-]")
Как убрать буквы, но оставить запятые в числах (например, "1,234.56")?

Используйте Regex-шаблон, который сохраняет цифры, запятые и точки:

= Text.Select([Column1], {"0".."9", ",", "."})

В VBA:

If IsNumeric(Mid(cell.Value, i, 1)) Or Mid(cell.Value, i, 1) = "," Or Mid(cell.Value, i, 1) = "." Then
Почему после очистки числа отображаются как текст (с зелёным треугольником)?

Excel автоматически присваивает текстовой формат ячейкам после извлечения данных. Чтобы преобразовать в числа:

  1. Выделите ячейки → ГлавнаяФорматФормат ячеек → выберите Числовой.
  2. Или используйте функцию =ЗНАЧЕН() для принудительного преобразования.
Как обработать данные в формате "1 000 500 руб." (с пробелами-разделителями)?

Сначала удалите пробелы, затем буквы:

=ПОДСТАВИТЬ(ПОДСТАВИТЬ(A1;" ";"");" руб.";"")

Или в Power Query:

= Text.Remove(Text.Replace([Column1], " ", ""), " руб.")
Можно ли автоматизировать очистку для новых данных?

Да. Создайте таблицу Excel (не диапазон!) и подключите к ней Power Query. При добавлении новых строк достаточно нажать Обновить, и очистка выполнится автоматически. Альтернатива — макрос с триггером на событие Worksheet_Change.