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

Проблема смешанных данных в Excel: когда буквы мешают расчётам

Вы когда-нибудь сталкивались с ситуацией, когда в ячейках Excel хранятся данные в формате "А123Б45" или "Артикул: 789", а вам нужны только цифры? Такие "гибридные" значения — настоящая головная боль для аналитиков, бухгалтеров и менеджеров, которые работают с числовыми отчётами. Excel воспринимает такие ячейки как текст, что делает невозможным выполнение математических операций, построение графиков или использование функций вроде СУММ().

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

Метод 1: Функция ПСТР + поиск позиций чисел (для структурированных данных)

Если ваши данные имеют предсказуемую структуру (например, всегда начинаются с букв, а цифры идут в конце), можно использовать комбинацию функций ПСТР(), ПОИСК() и ДЛСТР(). Этот способ идеален для артикулов типа "PRD-4567" или телефонных номеров в формате "Tel: +7(912)345-67-89".

Пример формулы для извлечения чисел из строки "Заказ №12345":

=ПСТР(A1;ПОИСК("№";A1)+1;ДЛСТР(A1)-ПОИСК("№";A1))

Разберём, как это работает:

  • 🔍 ПОИСК("№";A1) находит позицию символа "№" (в нашем случае это 7-й символ)
  • 📏 ДЛСТР(A1) возвращает общую длину строки (12 символов)
  • ✂️ ПСТР() извлекает подстроку, начиная с позиции после "№" (7+1=8) и длиной 12-7=5 символов

Ячейки имеют одинаковый разделитель перед цифрами (№, :, -, и т.д.)

Цифры всегда находятся в конце строки

В строке нет лишних цифр до разделителя

Длина числовой части одинакова во всех ячейках-->

⚠️ Внимание: Этот метод не подходит, если цифры разбросаны по всей строке (например, "А1Б2В3"). В таких случаях используйте регулярные выражения (Метод 4) или VBA (Метод 5).

Метод 2: Формулы массива для извлечения всех чисел из строки

Когда цифры перемешаны с буквами (например, "A1B2C3D4"), на помощь приходят формулы массива. Этот способ универсален, но требует аккуратности при вводе. Мы будем использовать комбинацию функций ТЕКСТПОСЛЕ(), ПОДСТАВИТЬ() и СЖПРОБЕЛЫ() (в новых версиях Excel) или классический подход с МИН()/МАКС().

Для Excel 365 и 2021:

=СЦЕПИТЬ(--НЕОШИБКА(--ПСТР(A1;СТРОКА(ДВССЫЛ("1:100"));1)+0))*1)

Эта формула должна вводиться как формула массива (нажать Ctrl+Shift+Enter в старых версиях).

Для более старых версий Excel:

=СУММПРОИЗВ(--НЕОШИБКА(--ПСТР(A1;СТРОКА(ДВССЫЛ("1:100"));1)+0));"")

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

  1. Функция ПСТР последовательно извлекает каждый символ из ячейки
  2. +0 пытается преобразовать символ в число (успешно только для цифр)
  3. НЕОШИБКА отфильтровывает только те символы, которые удалось преобразовать
  4. СЦЕПИТЬ или СУММПРОИЗВ собирает все цифры в одну строку
Почему формула использует ДВССЫЛ("1

100"):

Это создаёт массив чисел от 1 до 100, который используется для перебора всех возможных позиций символов в строке. 100 взято с запасом — формула будет работать даже для строк длиной до 100 символов. Для оптимизации можно заменить 100 на максимальную длину ваших строк.

Исходные данные Формула для Excel 365 Формула для Excel 2016 Результат
A1B2C3 =СЦЕПИТЬ(--НЕОШИБКА(...)) =СУММПРОИЗВ(--НЕОШИБКА(...)) 123
Пример45Тест67 =СЦЕПИТЬ(--НЕОШИБКА(...)) =СУММПРОИЗВ(--НЕОШИБКА(...)) 4567
1a2b3c4d =СЦЕПИТЬ(--НЕОШИБКА(...)) =СУММПРОИЗВ(--НЕОШИБКА(...)) 1234

Метод 3: Power Query — профессиональный инструмент для больших данных

Если вам нужно очистить тысячи строк или данные поступают из внешних источников (CSV, базы данных), Power Query станет вашим лучшим помощником. Этот инструмент встроен в Excel 2016+ и позволяет создавать многоступенчатые преобразования данных без формул.

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

  1. Выделите ваш диапазон и перейдите на вкладку Данные → Из таблицы/диапазона
  2. В открывшемся редакторе Power Query выберите колонку с данными
  3. Перейдите на вкладку Преобразовать → Заменить значения
  4. В поле "Найти" введите регулярное выражение [^0-9] (удалит всё, кроме цифр)
  5. Оставьте поле "Заменить на" пустым и нажмите ОК
  6. Нажмите Закрыть и загрузить, чтобы вернуть данные в Excel

Формулы

Power Query

VBA-макросы

Ручной ввод

Не знаю, что такое Power Query-->

Преимущества Power Query:

  • 🔄 Один раз настроил — используй для любых новых данных
  • ⚡ Обрабатывает миллионы строк без замедления
  • 📊 Сохраняет историю преобразований
  • 🔗 Можно подключать данные из разных источников
⚠️ Внимание: При использовании [^0-9] будут удалены все нецифровые символы, включая точки, запятые и знаки валют. Если вам нужно сохранить разделители тысяч (например, в числе "1 000 000"), используйте более сложное регулярное выражение: [^0-9 ] (обратите внимание на пробел перед закрывающей скобкой).

Метод 4: Регулярные выражения через VBA (для опытных пользователей)

Если вам нужно автоматизировать очистку или обрабатывать данные по сложным правилам (например, сохранять только 6-значные числа), VBA с регулярными выражениями — самый мощный инструмент. Этот метод требует базовых знаний программирования, но даёт максимальную гибкость.

Пример макроса, который удаляет все нецифровые символы в выбранных ячейках:

Sub УдалитьБуквыОставитьЦифры()

Dim rng As Range

Dim cell As Range

Dim regex As Object

Set regex = CreateObject("VBScript.RegExp")

' Настраиваем регулярное выражение

With regex

.Pattern = "[^0-9]"

.Global = True

End With

' Обрабатываем каждую ячейку в выделенном диапазоне

For Each cell In Selection

If cell.Value <> "" Then

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

End If

Next cell

Set regex = Nothing

End Sub

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

  1. Нажмите Alt+F11, чтобы открыть редактор VBA
  2. Вставьте код в новый модуль (Insert → Module)
  3. Выделите ячейки, которые нужно очистить
  4. Запустите макрос через Alt+F8 или кнопку на панели
Application.ScreenUpdating = False и Application.Calculation = xlCalculationManual, а после цикла верните настройки обратно.-->

Модификации регулярного выражения для разных задач:

  • 🔢 Сохранить только целые числа: "[^0-9]"
  • 💰 Сохранить числа с десятичными разделителями: "[^0-9,.]"
  • 📞 Сохранить телефонные номера (цифры и +): "[^0-9+]"
  • 📊 Сохранить числа с разделителями тысяч: "[^0-9 ]"

Метод 5: Функция ПЕРЕВЕСТИ + КОДСИМВ (для специальных случаев)

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

Формула для удаления всех букв (кириллица + латиница):

=СЦЕПИТЬ(ЕСЛИОШИБКА(ЕСЛИ(ИЛИ(

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

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

Расшифровка:

  • 🔤 КОДСИМВ() возвращает код символа в таблице ASCII
  • 🔢 Цифры в ASCII имеют коды от 48 ("0") до 57 ("9")
  • ЕСЛИ проверяет, попадает ли код символа в этот диапазон
  • 📎 СЦЕПИТЬ собирает только те символы, которые прошли проверку

Сравнение методов: какой выбрать для вашей задачи

Выбор оптимального способа зависит от структуры данных, версии Excel и объёма информации. Вот сравнительная таблица, которая поможет определиться:

Метод Подходит для Скорость Сложность Требуемая версия Excel
ПСТР + ПОИСК Структурированные данные с фиксированным разделителем ⚡⚡⚡⚡⚡ ★☆☆☆☆ Любая
Формулы массива Цифры перемешаны с буквами, небольшие диапазоны ⚡⚡⚡☆☆ ★★★☆☆ 2016+ (для СЦЕПИТЬ)
Power Query Большие объёмы данных, регулярная очистка ⚡⚡⚡⚡☆ ★★☆☆☆ 2016+
VBA + RegExp Сложные правила очистки, автоматизация ⚡⚡⚡⚡⚡ ★★★★☆ Любая
ПЕРЕВЕСТИ + КОДСИМВ Удаление конкретных символов по кодам ⚡⚡☆☆☆ ★★★★☆ Любая

Для разовых задач с небольшими данными подойдут формулы (Методы 1-2). Если вам нужно регулярно очищать большие файлы, освойте Power Query (Метод 3). Для максимальной автоматизации и гибкости используйте VBA (Метод 4).

Типичные ошибки и как их избежать

Даже опытные пользователи Excel иногда сталкиваются с проблемами при очистке данных. Вот 5 самых распространённых ошибок и способы их решения:

  1. Формулы возвращают #ЗНАЧ!

    Причина: Ячейка содержит #Н/Д или другой тип ошибки. Решение: Оберните формулу в ЕСЛИОШИБКА():

    =ЕСЛИОШИБКА(ваша_формула; "")
  2. Числа превращаются в даты

    Причина: Excel автоматически преобразует числа типа "01-12" в дату "1 декабря". Решение: Предварительно отформатируйте ячейки как Текстовый формат.

  3. Макрос не работает на некоторых символах

    Причина: Регулярное выражение не учитывает специфические символы (например, неразрывные пробелы). Решение: Добавьте в шаблон [^0-9\u00A0] для учёта неразрывных пробелов.

  4. Power Query "съедает" ведущие нули

    Причина: По умолчанию Power Query удаляет ведущие нули. Решение: После очистки измените тип данных колонки на Текст.

  5. Формулы массива тормозят файл

    Причина: Слишком большой диапазон в ДВССЫЛ("1:10000"). Решение: Замените 10000 на реальную максимальную длину ваших строк (например, ДВССЫЛ("1:50") для строк до 50 символов).

FAQ: Ответы на частые вопросы

Можно ли удалить буквы, но сохранить знаки "+", "-", и десятичные разделители?

Да, для этого модифицируйте регулярное выражение в VBA или Power Query. Например, для сохранения чисел со знаком и десятичной запятой используйте:

[^0-9+,\-.]

Обратите внимание на экранирование точки (\.) и включение дефиса (-) в конец списка (после дефиса в регулярках нужно ставить экранирование или помещать его в конец).

Как удалить буквы в Google Таблицах?

В Google Sheets используйте функцию REGEXREPLACE:

=REGEXREPLACE(A1; "[^\d]"; "")

Где \d — это любой цифровой символ. Для сохранения знака минуса и десятичной запятой:

=REGEXREPLACE(A1; "[^\d\-\.,]"; "")
Почему после очистки числа не суммируются?

Скорее всего, результаты формул сохранены как текст. Преобразуйте их в числа одним из способов:

  • Выделите ячейки → нажмите Ctrl+C → правая кнопка → Специальная вставка → Значения → Умножить
  • Используйте функцию ЗНАЧЕН(): =ЗНАЧЕН(ваша_формула)
  • Добавьте ноль в конце формулы: =ваша_формула+0
Как обработать данные в формате "1 000 234,56 руб"?

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

  1. Удалите текст ("руб"): =ПОДСТАВИТЬ(A1; " руб"; "")
  2. Замените разделители тысяч: =ПОДСТАВИТЬ(результат_шага1; " "; "")
  3. Замените запятую на точку (если нужно): =ПОДСТАВИТЬ(результат_шага2; ","; ".")
  4. Преобразуйте в число: =ЗНАЧЕН(результат_шага3)

Или одним махом через Power Query с регулярным выражением: [^0-9,] (сохраняет цифры и запятые).

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

Да, для этого:

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

Также можно настроить автоматическое обновление при открытии файла: Данные → Свойства → Обновлять при открытии файла.