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

Работа с данными в Microsoft Excel часто требует предварительной очистки: удаления лишних символов, разделителей или текста, чтобы остались только числовые значения. Эта задача возникает при импорте данных из внешних источников — будь то выгрузки из , отчёты из Google Analytics, или даже скопированные таблицы с веб-сайтов. Проблема в том, что Excel воспринимает ячейки с смешанным содержимым (например, "100 кг" или "$25.99") как текст, а не как числа, что блокирует возможность проведения вычислений, построения графиков или применения функций вроде СУММ().

В этой статье мы разберём 5 проверенных методов, как оставить в ячейках только цифры — от ручных способов для небольших таблиц до автоматизированных решений для обработки тысяч строк. Вы узнаете, какой метод выбрать в зависимости от структуры данных, научитесь избегать типичных ошибок (например, потери ведущих нулей) и сможете адаптировать решения под свои задачи. Особое внимание уделим скрытым подводным камням: почему функция ЗАМЕНИТЬ() может не сработать с валютами, как сохранить разделители тысяч, и что делать, если цифры «спрятаны» в тексте неочевидным образом.

———

1. Ручное удаление символов: когда данных мало

Если вам нужно очистить несколько десятков ячеек, самый простой способ — сделать это вручную. Этот метод не требует знания формул или макросов, но подходит только для небольших объёмов данных. Вот как действовать:

Откройте таблицу и выделите диапазон ячеек, которые нужно отредактировать. Дважды кликните по первой ячейке (или нажмите F2), чтобы перейти в режим редактирования. Удалите все символы, кроме цифр, используя клавиши Backspace или Delete. Например, в ячейке "Артикул: 12345-A" оставьте только "12345". После редактирования нажмите Enter, чтобы подтвердить изменения, и переходите к следующей ячейке.

Для ускорения процесса можно использовать горячие клавиши:

  • 🔹 F2 — редактировать ячейку;
  • 🔹 Ctrl + → — переместиться в конец строки;
  • 🔹 Ctrl + ← — вернуться в начало;
  • 🔹 Alt + ↓ — открыть выпадающий список (если данные повторяются).

⚠️ Внимание: При ручном редактировании легко пропустить ячейки или допустить опечатку. Всегда проверяйте результат с помощью функции ЕЧИСЛО():

=ЕЧИСЛО(A1)

Если функция возвращает ИСТИНА — ячейка содержит только число. Если ЛОЖЬ — остались посторонние символы.

2. Функция ЗАМЕНИТЬ(): удаляем известные символы

Если в ваших данных есть повторяющиеся нечисловые символы (например, валюты, единицы измерения или разделители), их можно удалить с помощью функции ЗАМЕНИТЬ(). Этот метод подходит для структурированных данных, где «мусор» предсказуем.

Допустим, у вас в столбце A значения вида "$1,234.56". Чтобы оставить только цифры и точку (разделитель дробной части), используйте вложенные функции:

=ЗАМЕНИТЬ(ЗАМЕНИТЬ(ЗАМЕНИТЬ(A1; "$"; ""); ","; ""); " "; "")

Разберём по шагам:

  1. ЗАМЕНИТЬ(A1; "$"; "") — убирает знак доллара;
  2. ЗАМЕНИТЬ(результат; ","; "") — удаляет запятые (разделители тысяч);
  3. ЗАМЕНИТЬ(результат; " "; "") — убирает пробелы (если есть).

Если разделитель дробной части — запятая (например, "1 234,56"), замените последнюю функцию на:

=ЗАМЕНИТЬ(ЗАМЕНИТЬ(A1; " "; ""); "."; ",")

⚠️ Внимание: Функция ЗАМЕНИТЬ() чувствительна к регистру! Если в данных встречается "USD" и "usd", придётся использовать две отдельные замены. Также она не удалит символы, которых нет в списке (например, если в какой-то ячейке окажется "€100", а вы удаляли только "$", евро останется).

Что делать, если символы разные в каждой ячейке?

Если нечисловые символы не повторяются (например, "100 кг", "200 шт", "300 л"), функция ЗАМЕНИТЬ() неэффективна. В этом случае лучше использовать Power Query (см. раздел 5) или регулярные выражения (доступны через VBA или надстройки вроде Kutools for Excel).

3. Текст по столбцам: разделение и извлечение чисел

Метод "Текст по столбцам" полезен, когда цифры в ячейке разделены фиксированным разделителем (например, "100 кг", "50% скидка"). Он позволяет разбить содержимое ячейки на части и оставить только числовую.

Выделите диапазон с данными и перейдите на вкладку "Данные""Текст по столбцам". В открывшемся окне:

  1. Выберите "С разделителями" → нажмите **"Далее";
  2. Укажите разделитель (например, пробел или табуляцию) или выберите "Другой" и введите символ (например, "кг" или "%");
  3. На шаге "Формат данных столбца" выберите для числового столбца формат "Общий" или "Числовой".

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

  • 🔸 Цифры и текст перемешаны без чёткого разделителя (например, "АртикулA123Б");
  • 🔸 Разделители непостоянны (точка с запятой, запятая, пробелы в разных ячейках).

Убедитесь, что разделитель одинаковый во всех ячейках|Проверьте, нет ли лишних пробелов (используйте =ПЕЧСИМВ(A1))|Сохраните оригинальные данные на другом листе|При необходимости замените разделители на единый символ (например, =ЗАМЕНИТЬ(A1; " "; "_"))

-->

4. Формулы для извлечения чисел из текста

Когда цифры вкраплены в текст (например, "Заказ №12345 от 01.01.2023"), ни ЗАМЕНИТЬ(), ни "Текст по столбцам" не помогут. Здесь нужны продвинутые формулы, которые анализируют каждый символ в ячейке и извлекают только цифры.

Самый надёжный способ — использовать массивную формулу (работает в Excel 365 и Excel 2019+):

=ТЕКСТСОЕДИНИТЬ("";ИСТИНА;ЕСЛИОШИБКА(--СРЕДСИМВ(A1;ПОСЛЕДОВАТ(1;ДЛСТР(A1)));"");1))
Эта формула преобразует каждый символ в число (с помощью двойного минуса --), игнорируя ошибки (текстовые символы), и объединяет результаты.

Для старых версий Excel (2016 и ранее) подойдёт формула с VBA-функцией (требует установки надстройки или макроса):

=GetNumbersOnly(A1)

Чтобы её использовать, откройте редактор VBA (Alt + F11), вставьте новый модуль и добавьте код:

Function GetNumbersOnly(rng As Range) As String

Dim str As String, i As Integer, char As String

str = rng.Value

For i = 1 To Len(str)

char = Mid(str, i, 1)

If IsNumeric(char) Then GetNumbersOnly = GetNumbersOnly & char

Next i

End Function

⚠️ Внимание: Формулы извлекают все цифры подряд, включая те, что являются частью дат или других значений. Например, из "10.05.2023 г." будет извлечено "10052023". Если нужны только определённые числа (например, номера заказов), используйте регулярные выражения (см. раздел 6).

📊 Какой метод вы чаще используете для очистки данных в Excel?
Ручное редактирование
Функция ЗАМЕНИТЬ()
Текст по столбцам
Формулы для извлечения чисел
Power Query/VBA
Другой

5. Power Query: автоматическая очистка больших таблиц

Для обработки тысяч строк ручные методы неэффективны. Здесь на помощь приходит Power Query — инструмент ETL (Extract, Transform, Load), встроенный в Excel 2016+ и Excel 365. Он позволяет автоматизировать очистку данных, включая удаление нечисловых символов.

Как использовать Power Query для извлечения чисел:

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

    (где [Column1] — имя вашего столбца).

  5. Нажмите "Закрыть и загрузить", чтобы вернуть очищенные данные в Excel.

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

  • 🔹 Обрабатывает миллионы строк без замедления;
  • 🔹 Сохраняет историю преобразований — можно обновить данные одним кликом;
  • 🔹 Поддерживает регулярные выражения для сложных шаблонов.

6. VBA-макросы: гибкость для сложных задач

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

Пример макроса, который удаляет все нечисловые символы в выделенном диапазоне:

Sub LeaveOnlyNumbers()

Dim rng As Range, cell As Range

Dim str As String, result As String

Dim i As Integer, char As String

Set rng = Selection

For Each cell In rng

str = cell.Value

result = ""

For i = 1 To Len(str)

char = Mid(str, i, 1)

If IsNumeric(char) Then result = result & char

Next i

cell.Value = Val(result) ' Преобразует строку в число

Next cell

End Sub

Чтобы запустить макрос:

  1. Нажмите Alt + F11, чтобы открыть редактор VBA;
  2. Вставьте код в новый модуль (InsertModule);
  3. Вернитесь в Excel, выделите диапазон и запустите макрос (Alt + F8 → выберите LeaveOnlyNumbersВыполнить).

Для более сложных сценариев (например, извлечения чисел по шаблону) используйте регулярные выражения:

Function ExtractNumbers(rng As Range) As String

Dim regex As Object

Set regex = CreateObject("VBScript.RegExp")

regex.Pattern = "[^0-9]" ' Удаляет всё, кроме цифр

regex.Global = True

ExtractNumbers = regex.Replace(rng.Value, "")

End Function

⚠️ Внимание: Макросы с регулярными выражениями могут замедлить работу на очень больших таблицах (100 000+ строк). В таких случаях лучше использовать Power Query или разбивать данные на части.

Сравнение методов: какой выбрать?

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

Метод Подходит для Сложность Ограничения Скорость
Ручное редактирование 1–50 ячеек Опечатки, пропуски Медленно
ЗАМЕНИТЬ() До 1 000 строк, повторяющиеся символы ⭐⭐ Не удаляет неожиданные символы Быстро
Текст по столбцам До 10 000 строк, фиксированные разделители ⭐⭐ Не работает с перемешанным текстом Средне
Формулы (массивные) Любой объём, цифры в тексте ⭐⭐⭐ Сложно поддерживать, тормозит при 100 000+ строк Медленно
Power Query 10 000+ строк, сложные правила ⭐⭐⭐ Требует изучения интерфейса Очень быстро
VBA-макросы Автоматизация, регулярные выражения ⭐⭐⭐⭐ Нужны навыки программирования Быстро

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

Можно ли сохранить разделители тысяч (пробелы или запятые) при очистке?

Да, но для этого нужно использовать условную замену. Например, если разделитель тысяч — пробел ("1 000 000"), сначала замените его на уникальный символ (например, |), затем удалите все остальные нечисловые символы, а в конце верните разделитель обратно:

=ЗАМЕНИТЬ(ЗАМЕНИТЬ(ЗАМЕНИТЬ(A1; " "; "|"); "$"; ""); "|"; " ")

В Power Query для этого используйте шаги:

  1. Замените пробелы на |;
  2. Удалите все нечисловые символы (Text.Select([Column1],{"0..9", "|"}));
  3. Замените | обратно на пробелы.
Почему после очистки числа отображаются как текст (с зелёным треугольником)?

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

  • 🔹 Выделите ячейки → нажмите Ctrl + 1 → выберите формат "Числовой";
  • 🔹 Используйте функцию =ЗНАЧЕН(A1), чтобы принудительно преобразовать текст в число;
  • 🔹 В Power Query выберите столбец → "Преобразовать""Тип данных: Десятичное число".

Если числа хранятся как текст с ведущими нулями (например, "00123"), при преобразовании в числовой формат нули пропадут. Чтобы сохранить их, оставьте формат "Текст" или используйте пользовательский формат (например, 00000).

Как извлечь только первое число из строки (например, из "5 яблок и 3 груши" получить "5")?

Используйте регулярные выражения в VBA или Power Query. Пример кода для VBA:

Function ExtractFirstNumber(rng As Range) As String

Dim regex As Object

Set regex = CreateObject("VBScript.RegExp")

regex.Pattern = "(\d+)"

regex.Global = False

If regex.Test(rng.Value) Then

ExtractFirstNumber = regex.Execute(rng.Value)(0).SubMatches(0)

Else

ExtractFirstNumber = ""

End If

End Function

В Power Query используйте:

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

(извлекает текст до первого пробела, затем можно применить Text.Select(..., {"0..9"})).

Что делать, если цифры в ячейке записаны как экспоненциальная нотация (например, "1.23E+05")?

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

  1. Выделите ячейки → Ctrl + 1 → выберите формат "Числовой" с нужным количеством десятичных знаков;
  2. Если это не сработало, умножьте ячейку на 1: =A1*1;
  3. В Power Query используйте = Number.From([Column1]).

⚠️ Если после преобразования отображается ########, расширьте столбец — число не помещается в ячейку по ширине.

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

Да, для этого настройте Power Query как промежуточный этап импорта:

  1. При подключении к источнику (например, Из файлаИз CSV) выберите "Преобразовать данные";
  2. В Power Query примените все необходимые очистки (замены, извлечение чисел и т. д.);
  3. Сохраните запрос и настройте автоматическое обновление при открытии файла или по расписанию.

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