Как оставить только цифры в Excel: от простых способов до автоматических решений

Работа с данными в Microsoft Excel часто требует предварительной очистки информации. Одна из самых распространённых задач — извлечение чисел из ячеек, содержащих смешанный текст: цены с валютами ("1500 руб."), телефонные номера ("+7(912)345-67-89"), идентификаторы ("ID-2023-04567") или технические параметры ("250мм x 150мм x 50мм"). Вручную редактировать сотни строк — неэффективно, поэтому важно знать автоматизированные методы.

Эта статья охватывает 7 проверенных способов, как оставить только цифры в Excel — от базовых функций для новичков до продвинутых макросов для опытных пользователей. Мы разберём:

  • 🔹 Формулы с использованием ПОИСК, ПСТР и регулярных выражений (для новых версий Excel).
  • 🔹 Надстройки типа Power Query для обработки больших массивов данных.
  • 🔹 Макросы VBA, которые ускоряют работу в 10 раз.
  • 🔹 Ручные методы для единичных правок.

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

📊 Как часто вам приходится очищать данные в Excel?
Ежедневно
Несколько раз в неделю
Редко
Никогда

1. Способ: Формулы для извлечения цифр (без VBA)

Если вам нужно один раз очистить данные и не хочется возиться с макросами, формулы — самый надёжный вариант. Они работают во всех версиях Excel (включая Excel 2010 и новее) и не требуют дополнительных надстроек.

Базовая логика: комбинируем функции ПОИСК (или НАЙТИ), ПСТР и ДЛСТР, чтобы последовательно извлекать цифры из строки. Например, для ячейки A1 с текстом "Артикул: 123-45-AB" формула будет такой:

=--ТЕКСТСОЕДИНИТЬ(ЕСЛИОШИБКА(ПСТР($A1;НАЙТИ(СТРОКА(0;1;...;9);$A1;МИН(ЕСЛИ(НАЙТИ(СТРОКА(0;1;...;9);$A1)<>0;НАЙТИ(СТРОКА(0;1;...;9);$A1))));1);"");"")

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

=ЗНАЧЕН(СУММПРОИЗВ(--ПСТР(A1;СТРОКА(ДВССЫЛ("1:100"));1)))
⚠️ Внимание: Формула выше вернёт сумму всех цифр в ячейке, а не их последовательность. Например, для "A12B34" результат будет 10 (1+2+3+4), а не 1234. Для корректного извлечения используйте метод из следующего раздела.

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

=ТЕКСТСОЕДИНИТЬ(ЕСЛИОШИБКА(ПСТР(A1;МАЛЕНЬКИЙ(ЕСЛИ(ЗНАЧЕН(ПСТР(A1;СТРОКА(ДВССЫЛ("1:"&ДЛСТР(A1)));1))<>0;СТРОКА(ДВССЫЛ("1:"&ДЛСТР(A1))));СТРОКА(ДВССЫЛ("1:"&ДЛСТР(A1))));1);"");"")

Эта формула работает даже с такими строками, как "+7 (912) 345-67-89", возвращая "79123456789".

☑️ Подготовка к использованию формул

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

2. Способ: Power Query (для Excel 2016 и новее)

Power Query — это встроенная надстройка в Excel 2016+ и Office 365, которая позволяет очищать данные визуально, без формул. Она идеальна для обработки больших таблиц (тысячи строк) и поддерживает регулярные выражения.

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

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

Преимущества метода:

  • 🔹 Работает с миллионами строк (в отличие от формул).
  • 🔹 Сохраняет ведущие нули (например, "0012345" останется "0012345").
  • 🔹 Можно создать шаблон и применять его к новым данным.
⚠️ Внимание: Если после очистки числа отображаются с зелёным треугольником в углу ячейки (ошибка текстового формата), выделите колонку → ГлавнаяФормат ячеек → выберите "Текстовый" или "Числовой".
Как вернуть исходные данные после Power Query?

Если вы закрыли редактор Power Query без сохранения, исходные данные остаются нетронутыми в Excel. Чтобы отменить изменения, удалите созданную таблицу или вернитесь в Данные → Запросы и соединения и удалите запрос.

3. Способ: Макрос VBA для автоматической очистки

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

Sub ОставитьТолькоЦифры()

Dim rng As Range

Dim cell As Range

Dim output As String

Dim i As Integer

' Выделенный диапазон

Set rng = Selection

' Отключаем обновление экрана для ускорения

Application.ScreenUpdating = False

For Each cell In rng

output = ""

For i = 1 To Len(cell.Value)

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

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

End If

Next i

cell.Value = output

Next cell

Application.ScreenUpdating = True

MsgBox "Очистка завершена! Обработано " & rng.Count & " ячеек.", vbInformation

End Sub

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

  1. Нажмите Alt + F11, чтобы открыть редактор VBA.
  2. Вставьте код выше в новый модуль (Insert → Module).
  3. Вернитесь в Excel, выделите диапазон с данными → запустите макрос через Alt + F8 → выберите "ОставитьТолькоЦифры" → Выполнить.

Особенности макроса:

  • 🔹 Работает с любым количеством ячеек (в отличие от формул).
  • 🔹 Сохраняет ведущие нули (если ячейка отформатирована как текст).
  • 🔹 Можно модифицировать для удаления конкретных символов (например, только букв или знаков препинания).

4. Способ: Надстройка "Kutools for Excel" (платно, но эффективно)

Если вы часто работаете с очисткой данных, рассмотрите плагин Kutools for Excel. Он добавляет десятки полезных функций, включая инструмент "Remove Characters" (Удалить символы), который за 2 клика удаляет всё, кроме цифр.

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

  1. Установите Kutools (есть бесплатная пробная версия).
  2. Выделите диапазон → на вкладке Kutools выберите Text → Remove Characters.
  3. В открывшемся окне отметьте "Non-numeric" (нечисловые символы) → OK.

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

  • 🔹 Работает быстрее VBA (оптимизированный код).
  • 🔹 Поддерживает пакетную обработку нескольких листов.
  • 🔹 Можно сохранять пресеты для повторного использования.
Метод Скорость Сохраняет ведущие нули Требует навыков Подходит для больших данных
Формулы Низкая Да (если формат "Текст") Средние Нет
Power Query Высокая Да Низкие Да
Макрос VBA Очень высокая Да Высокие Да
Kutools Высокая Да Низкие Да
Ручная правка Очень низкая Да Отсутствуют Нет

5. Способ: Ручная очистка (для небольших таблиц)

Если данных мало (до 50 строк), можно обойтись без автоматизации. Вот 3 быстрых приёма:

  • 🔹 Найти и заменить: Нажмите Ctrl + H, в поле "Найти" введите нечисловой символ (например, "руб."), оставьте "Заменить на" пустым → Заменить всё. Повторите для всех ненужных символов.
  • 🔹 Текст по столбцам: Выделите колонку → ДанныеТекст по столбцам → выберите "С разделителями" → укажите разделитель (например, пробел или тире) → нажмите "Готово". Цифры окажутся в отдельной колонке.
  • 🔹 Фlash Fill (Быстрое заполнение): Введите в соседней колонке первый очищенный пример (например, из "123-45" сделайте "12345") → нажмите Ctrl + E, и Excel автоматически заполнит остальные строки.

Минусы ручного метода:

  • 🔸 Ошибки при пропуске символов (например, забыли удалить "$").
  • 🔸 Долго для таблиц от 100 строк.
  • 🔸 Не сохраняет ведущие нули, если ячейка отформатирована как число.

6. Способ: Регулярные выражения (для Excel 365 и Power Query)

В Excel 365 и Power Query доступны регулярные выражения (regex) — мощный инструмент для работы с текстом. Например, чтобы оставить только цифры в колонке, используйте этот шаблон:

[^0-9]

Где:

  • [^... — исключает всё, что в скобках.
  • 0-9 — диапазон цифр от 0 до 9.

Пример применения в Power Query:

  1. Загрузите данные в Power Query (как в разделе 2).
  2. Выберите колонку → ПреобразоватьЗаменить значенияДополнительно.
  3. Включите опцию "Использовать регулярные выражения" → в поле "Найти" введите [^0-9] → оставьте "Заменить на" пустым.

Для извлечения дробных чисел (например, "3.14 м" → "3.14") используйте regex:

[^0-9.]
⚠️ Внимание: В некоторых локалях Excel использует запятую вместо точки как разделитель дробной части. В этом случае замените . на ; в регулярном выражении: [^0-9,].

7. Способ: Очистка через Google Таблицы (если Excel недоступен)

Если у вас нет доступа к Excel, но есть Google Таблицы, воспользуйтесь функцией REGEXREPLACE. Она поддерживает регулярные выражения и работает аналогично Power Query.

Формула для извлечения цифр:

=REGEXREPLACE(A1; "[^0-9]"; "")

Примеры:

  • 🔹 Для "+7 (912) 345-67-89" → вернёт "79123456789".
  • 🔹 Для "1 000 руб." → вернёт "1000".
  • 🔹 Для "Артикул: 0012345" → вернёт "0012345".

Чтобы применить формулу ко всему столбцу, протяните её вниз или используйте ARRAYFORMULA:

=ARRAYFORMULA(IF(A1:A=""; ""; REGEXREPLACE(A1:A; "[^0-9]"; "")))

Преимущества Google Таблиц:

  • 🔹 Бесплатны и доступны с любого устройства.
  • 🔹 Поддерживают совместную работу в реальном времени.
  • 🔹 Можно импортировать данные из Excel и обратно.

FAQ: Частые вопросы по очистке цифр в Excel

❓ Почему после очистки числа отображаются как текст (с зелёным треугольником)?

Это происходит, если Excel интерпретирует содержимое как текст (например, из-за ведущих нулей). Чтобы исправить:

  1. Выделите ячейки → нажмите Ctrl + 1 (или правая кнопка → Формат ячеек).
  2. Выберите формат "Числовой" или "Общий".
  3. Если нужно сохранить нули (например, в артикулах), оставьте формат "Текстовый" и игнорируйте предупреждение.
❓ Как очистить числа с разделителями тысяч (например, "1 000 000")?

Используйте формулу с заменой пробелов:

=ЗНАЧЕН(ПОДСТАВИТЬ(A1; " "; ""))

Или в Power Query замените пробелы на пустую строку перед удалением нечисловых символов.

❓ Можно ли очистить цифры, сохраняя знак минус для отрицательных чисел?

Да, модифицируйте регулярное выражение в Power Query или Google Таблицах:

[^0-9-]

Или используйте этот макрос VBA:

Sub ОставитьЦифрыИМинус()

Dim rng As Range, cell As Range, output As String, i As Integer

Set rng = Selection

For Each cell In rng

output = ""

For i = 1 To Len(cell.Value)

If IsNumeric(Mid(cell.Value, i, 1)) Or Mid(cell.Value, i, 1) = "-" Then

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

End If

Next i

cell.Value = output

Next cell

End Sub

❓ Как очистить данные в формате "10 кг", оставив только "10"?

Используйте Power Query с разделением по пробелу:

  1. Загрузите данные в Power Query.
  2. Выберите колонку → ПреобразоватьРазделить столбецПо разделителю.
  3. Укажите разделитель "Пробел" → выберите "Левая часть" (чтобы оставить только число).

Или примените формулу:

=ЛЕВСИМВ(A1; НАЙТИ(" "; A1) - 1)
❓ Почему макрос не работает с ячейками, содержащими дроби (например, "3,14 м")?

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

Sub ОставитьЦифрыИЗапятую()

Dim rng As Range, cell As Range, output As String, i As Integer

Set rng = Selection

For Each cell In rng

output = ""

For i = 1 To Len(cell.Value)

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

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

End If

Next i

cell.Value = output

Next cell

End Sub

Для корректной работы замените в Excel запятую на точку (или наоборот) в зависимости от региональных настроек.