Как вытащить число из текста в Excel: от простых функций до VBA

Вы когда-нибудь сталкивались с ситуацией, когда в ячейке Excel хранится смешанный текст типа "Заказ №12345 от 15.05.2026", а вам нужно извлечь только номер заказа или дату? Или когда данные приходят в формате "Вес: 3.5 кг", а для расчетов требуется только цифра 3.5? Извлечение чисел из текстовых строк — одна из самых распространенных задач при работе с данными в Microsoft Excel и Google Sheets.

В этой статье мы разберем 7 проверенных способов извлечения чисел из текста — от элементарных функций для новичков до продвинутых методов с Power Query и VBA. Вы узнаете, какой метод выбрать в зависимости от структуры данных, научитесь обрабатывать числа с десятичными разделителями, отрицательные значения и даже извлекать несколько чисел из одной строки. Все примеры протестированы на Excel 2010–2026 и Office 365.

1. Простейшие функции: ЛЕВСИМВ, ПРАВСИМВ, ПСТР

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

Пример 1: Извлечем номер заказа из строки "Заказ №12345 от 15.05", где цифры всегда идут после "№" и занимают 5 символов:

=ПСТР(A1;НАЙТИ("№";A1)+1;5)

Пример 2: Для текста "Вес: 3.5 кг", где число всегда стоит после двоеточия и перед пробелом:

=ПСТР(A1;НАЙТИ(":";A1)+2;НАЙТИ(" ";A1;НАЙТИ(":";A1))-НАЙТИ(":";A1)-2)
  • Плюсы: не требует дополнительных надстроек, работает во всех версиях Excel
  • Минусы: ломается при изменении структуры текста (например, если число сдвинется на 1 символ)
  • 🔹 Когда использовать: для однотипных данных с четкой структурой (номера документов, артикулы)

2. Функция ЗНАЧЕН: преобразование текстового числа в числовой формат

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

Пример: Преобразуем строку "Цена: 1 250,50 руб." в число 1250.50:

=ЗНАЧЕН(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(A1;" руб.";"");"Цена: ";"");" ";"");",")
Исходный текстФормулаРезультат
"Температура: 23.7°C"=ЗНАЧЕН(ПОДСТАВИТЬ(A1;"°C";""))23.7
"Скидка 15%"=ЗНАЧЕН(ПОДСТАВИТЬ(A1;"%";""))/1000.15
"Кол-во: 42 шт"=ЗНАЧЕН(ПОДСТАВИТЬ(A1;" шт";""))42
⚠️ Внимание: Функция ЗНАЧЕН вернет ошибку #ЗНАЧ!, если в тексте останутся нечисловые символы (например, буквы или знаки #, $). Всегда проверяйте результат!

3. Регулярные выражения через Power Query (Excel 2016+)

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

  • 🔢 Все числа из строки (например, "Артикул T-45-XYZ-78"45 и 78)
  • 💰 Денежные суммы с валютами ("$19.99" или "1 000 ₽")
  • 📅 Даты в нестандартных форматах ("Дата: 05/15/2026")

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

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

Используйте формулу = Text.Select([Column1], {"0-9", ".", "-"}) и добавьте шаг замены двойных дефисов:

= Table.ReplaceValue(#"Добавлен настраиваемый столбец", "--", "-", Replacer.ReplaceText,{"Custom"})

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

Если в одной ячейке содержится несколько чисел (например, "Размеры: 10x20x30 см"), и вам нужно извлечь их все в отдельные столбцы, используйте формулы массива:

Формула для извлечения первого числа:

=--ЛЕВСИМВ(ПОДСТАВИТЬ(0&ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(A1;0;"");1;"");2;"");3;"");...

...МИН(ЕСЛИОШИБКА(НАЙТИ({0;1;2;3;4;5;6;7;8;9};0&ПОДСТАВИТЬ(A1;0;""));""))-1)

Для второго и третьего чисел замените ЛЕВСИМВ на ПСТР с соответствующими смещениями. Этот метод требует навыков работы с формулами массива (вводите через CTRL+SHIFT+ENTER в Excel 2019 и ранее).

⚠️ Внимание: Формулы массива значительно замедляют работу книги при обработке более 10 000 строк. Для больших данных используйте Power Query или VBA.
📊 Какой метод вы используете чаще для извлечения чисел?
Стандартные функции (ЛЕВСИМВ, ПРАВСИМВ)
Power Query
Формулы массива
VBA
Не знаю, какой выбрать

5. VBA-скрипты для автоматизации

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

Sub ExtractNumbers()

Dim rng As Range, cell As Range

Dim regex As Object, matches As Object

Dim result As String, i As Long

Set regex = CreateObject("VBScript.RegExp")

regex.Pattern = "[-+]?\d+\.?\d*" ' Шаблон для целых и дробных чисел

regex.Global = True

For Each cell In Selection

If regex.Test(cell.Value) Then

Set matches = regex.Execute(cell.Value)

result = ""

For i = 0 To matches.Count - 1

result = result & matches(i) & ", "

Next i

cell.Offset(0, 1).Value = Left(result, Len(result) - 2)

End If

Next cell

End Sub

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

  1. Нажмите ALT+F11Insert → Module
  2. Вставьте код выше и закройте редактор
  3. Выделите диапазон с данными и запустите макрос через ALT+F8

Убедитесь, что включена вкладка "Разработчик" (Файл → Параметры → Настройка ленты)

Сохраните файл как .xlsm (с поддержкой макросов)

Отключите защиту листа, если она активна

Проверьте настройку безопасности макросов (Файл → Параметры → Центр управления безопасностью)

-->

6. Обработка специальных случаев

Некоторые текстовые форматы требуют особого подхода. Рассмотрим типичные сложности и их решения:

СлучайПример данныхРешение
Дробные числа с запятой"3,14 метра"=ЗНАЧЕН(ПОДСТАВИТЬ(A1;",";"."))
Числа с разделителями тысяч"1 000 000"=ЗНАЧЕН(ПОДСТАВИТЬ(A1;" ";""))
Отрицательные числа"Температура: -5°C"=ЗНАЧЕН(ПОДСТАВИТЬ(ПОДСТАВИТЬ(A1;"°C";"");"Температура: ";""))
Римские цифры"Глава IV"Используйте таблицу соответствия или VBA

Критическая особенность: При работе с данными из 1C, SAP или других систем числа часто экспортируются с неразрывными пробелами ( ). Заменяйте их через =ПОДСТАВИТЬ(A1;СИМВОЛ(160);"").

7. Проверка и очистка результатов

После извлечения чисел всегда проверяйте:

  • 🔍 Тип данных: Используйте ТИП(A1)=1 для проверки, что результат — число, а не текст
  • 📏 Диапазон значений: Функция =ЕСЛИ(И(A1>=0;A1<=100);"Корректно";"Ошибка") поможет отфильтровать выбросы
  • 🔄 Дубликаты: Примените Уникальные значения (Данные → Удалить дубликаты)

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

  1. Выделите столбец с результатами
  2. Главная → Условное форматирование → Правила выделения ячеек → Текст содержит
  3. Укажите символы, которые не должны остаться (например, #, $)

FAQ: Частые вопросы по извлечению чисел

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

Да, в Excel 2013+ есть функция быстрого заполнения (CTRL+E). Выделите столбец с данными, введите первый результат вручную, затем нажмите CTRL+E — Excel автоматически распознает шаблон и заполнит остальные ячейки. Работает для простых шаблонов типа "Артикул 123"123.

Как извлечь число из текста, если оно в середине строки и длиной не фиксирована?

Используйте комбинацию функций НАЙТИ, ПСТР и ПОИСК для динамического определения позиций. Пример для текста "Код товара ABC123XYZ":

=ЗНАЧЕН(ПСТР(A1;МИН(ЕСЛИОШИБКА(НАЙТИ({0;1;2;3;4;5;6;7;8;9};A1);""));...

...МАКС(ЕСЛИОШИБКА(НАЙТИ({0;1;2;3;4;5;6;7;8;9};A1;МИН(ЕСЛИОШИБКА(НАЙТИ({0;1;2;3;4;5;6;7;8;9};A1);""))+1);""))-...

...МИН(ЕСЛИОШИБКА(НАЙТИ({0;1;2;3;4;5;6;7;8;9};A1);""))))

Для Excel 365 упрощенный вариант:

=ЗНАЧЕН(ТЕКСТПОСЛЕ(ТЕКСТДО(A1;МИН(ФИЛЬТР(НАЙТИ({0;1;2;3;4;5;6;7;8;9};A1&"0123456789");{0;1;2;3;4;5;6;7;8;9}<>0)));МИН(ФИЛЬТР(НАЙТИ({0;1;2;3;4;5;6;7;8;9};A1&"0123456789");{0;1;2;3;4;5;6;7;8;9}<>0))))
Почему функция ЗНАЧЕН возвращает ошибку #ЗНАЧ?

Ошибка возникает, если в тексте остались нечисловые символы (кроме десятичного разделителя). Проверьте:

  • Невидимые символы (неразрывные пробелы, табуляции) — используйте =КОДСИМВ(ЛЕВСИМВ(A1)) для их обнаружения
  • Буквы или знаки (#, %, ) — удалите их через ПОДСТАВИТЬ
  • Локальные настройки (в немецкой версии Excel десятичный разделитель — запятая, а не точка)
Как извлечь число из текста в Google Sheets?

В Google Таблицах используйте те же принципы, но с учетом синтаксиса:

  • Замените ; на , в формулах
  • Функция REGEXEXTRACT упрощает работу с регулярными выражениями:
    =ARRAYFORMULA(IFERROR(REGEXEXTRACT(A1:A; "-?\d+\.?\d*")*1; ""))
  • Для извлечения всех чисел из строки:
    =ARRAYFORMULA(SPLIT(REGEXREPLACE(A1; "[^\d\.]+"; ","); ","))
Можно ли извлечь числа из текста в Excel Online?

Да, но с ограничениями:

  • ✅ Работают стандартные функции (LEFT, MID, VALUE)
  • ❌ Нет поддержки Power Query и макросов
  • ⚠️ Формулы массива требуют ручного ввода (нет CTRL+SHIFT+ENTER)

Для сложных задач экспортируйте данные в настольную версию Excel.