Вы когда-нибудь сталкивались с ситуацией, когда в ячейке 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;"%";""))/100 | 0.15 |
"Кол-во: 42 шт" | =ЗНАЧЕН(ПОДСТАВИТЬ(A1;" шт";"")) | 42 |
⚠️ Внимание: ФункцияЗНАЧЕНвернет ошибку#ЗНАЧ!, если в тексте останутся нечисловые символы (например, буквы или знаки#,$). Всегда проверяйте результат!
3. Регулярные выражения через Power Query (Excel 2016+)
Для сложных текстовых шаблонов (например, когда числа перемешаны с буквами или содержат разные разделители) идеально подходит Power Query с поддержкой регулярных выражений. Этот метод позволяет извлекать:
- 🔢 Все числа из строки (например,
"Артикул T-45-XYZ-78"→45и78) - 💰 Денежные суммы с валютами (
"$19.99"или"1 000 ₽") - 📅 Даты в нестандартных форматах (
"Дата: 05/15/2026")
Пошаговая инструкция:
- Выделите данные →
Данные → Получить данные → Из таблицы/диапазона - В редакторе Power Query добавьте столбец
Настраиваемый столбецс формулой:
= Text.Select([Column1], {"0-9", "."})(извлечет числа и десятичные точки) - При необходимости преобразуйте текст в число через
Тип данных → Десятичное число
Как извлечь отрицательные числа?
Используйте формулу = 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.
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
Как использовать:
- Нажмите
ALT+F11→Insert → Module - Вставьте код выше и закройте редактор
- Выделите диапазон с данными и запустите макрос через
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);"Корректно";"Ошибка")поможет отфильтровать выбросы - 🔄 Дубликаты: Примените
Уникальные значения(Данные → Удалить дубликаты)
Для визуального контроля используйте условное форматирование:
- Выделите столбец с результатами
Главная → Условное форматирование → Правила выделения ячеек → Текст содержит- Укажите символы, которые не должны остаться (например,
#,$)
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.