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

Работа с данными в Microsoft Excel часто осложняется тем, что числа хранятся вместе с текстовыми символами: "10 кг", "5 м²", "20% скидка" или "Артикул #12345". Стандартные функции вроде СУММ() игнорируют такие ячейки, а ручное разделение данных отнимает часы. Между тем, в 80% случаев эти числа можно автоматически извлечь и использовать в расчётах — без макросов и сторонних надстроек.

Проблема актуальна для бухгалтеров (анализ накладных с весами), логистов (подсчёт объёмов грузов), маркетологов (разбор отчётов с процентами) и даже HR-специалистов (обработка анкет с возрастом в формате "35 лет"). В этой статье разберём 5 проверенных методов — от простых функций до продвинутых формул массива, — которые превратят "нечитаемые" данные в готовые для анализа цифры.

———

Почему Excel не видит числа в тексте?

Причина кроется в типе данных: Excel воспринимает "15 кг" как текст, а не как число 15 с единицей измерения. Алгоритм обработки ячеек работает так:

  • 🔍 Автоматическое определение типа: если в ячейке есть хоть один нецифровой символ (кроме разделителей тысяч и десятичной точки), Excel присваивает формат Текст.
  • Игнорирование в формулах: функции СУММ(), СРЗНАЧ() и другие пропускают текстовые ячейки, даже если они содержат цифры.
  • ⚠️ Скрытые символы: иногда числа "портит" невидимый пробел или перенос строки (например, при импорте из PDF).

Интересный факт: в Google Sheets часть функций (например, SUM) автоматически извлекает числа из текста, тогда как Excel требует явного указания. Это одна из причин, почему пользователи переходят на альтернативные табличные редакторы для работы с "грязными" данными.

⚠️ Внимание: если вы импортировали данные из внешнего источника (например, или CRM-системы), сначала проверьте наличие скрытых символов функцией =КОДСИМВ(ЛЕВСИМВ(A1;1)). Коды от 0 до 31 указывают на непечатаемые знаки.

Метод 1: Функции ЛЕВСИМВ, ПРАВСИМВ и ПСТР для простых случаев

Если числа в тексте всегда стоят в одном и том же месте (например, "Вес: 10 кг" или "20м²"), можно использовать комбинацию функций для извлечения подстрок:

  • 📌 =ЛЕВСИМВ(A1;2) — вернёт первые 2 символа (подходит для "10 кг"10).
  • 📌 =ПРАВСИМВ(A1;3) — вернёт последние 3 символа (для "Скидка 15%15%).
  • 📌 =ПСТР(A1;8;2) — извлечёт 2 символа, начиная с 8-й позиции (для "Артикул #123"12).

Главный недостаток метода — хрупкость: если формат данных изменится (например, вместо "10 кг" появится "10.5 кг"), формулы перестанут работать. Для надёжности комбинируйте их с ЗАМЕНИТЬ():

=ЗАМЕНИТЬ(ЛЕВСИМВ(A1;НАЙТИ(" кг";A1)-1);" ";"")

Эта формула найдёт позицию подстроки " кг", отсечёт всё до неё и удалит пробелы.

Метод 2: Преобразование текста в число с помощью ЗНАЧЕН

Функция =ЗНАЧЕН(текст) преобразует строки в числа, но только если текст представляет собой корректное числовое значение. Например:

  • ✅ Работает: =ЗНАЧЕН("15")15, =ЗНАЧЕН("10.5")10,5.
  • ❌ Не работает: =ЗНАЧЕН("15 кг") → ошибка #ЗНАЧ!.

Чтобы обойти ограничение, предварительно очистите текст от лишних символов:

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

Эта формула последовательно удаляет " кг", " м" и " %", оставляя только цифры. Для удобства можно создать пользовательскую функцию (макрос) на VBA, если таких операций много.

Исходный текст Формула Результат
"15 кг" =ЗНАЧЕН(ПОДСТАВИТЬ(A1;" кг";"")) 15
"20.5 м²" =ЗНАЧЕН(ПОДСТАВИТЬ(A1;" м²";"")) 20,5
"Скидка 30%" =ЗНАЧЕН(ПРАВСИМВ(A1;3))/100 0,3
⚠️ Внимание: функция ЗНАЧЕН не распознаёт десятичные разделители в формате "10,5" (с запятой). Заменяйте запятую на точку перед преобразованием: =ЗНАЧЕН(ПОДСТАВИТЬ(A1;",";".")).
📊 Как часто вы сталкиваетесь с числами в текстовом формате в Excel?
Ежедневно
Несколько раз в неделю
Редко
Никогда

Метод 3: Регулярные выражения (для Excel 365 и 2021)

В новых версиях Excel (начиная с Microsoft 365) появились функции для работы с регулярными выражениями: ТЕКСТПОСЛЕ(), ТЕКСТДО(), ТЕКСТРАЗД() и ЗАМЕНИТЬРЕГ(). Они позволяют гибко извлекать числа из любого текста.

Примеры:

  • 🔢 Извлечь все цифры из "Артикул ABC-123-XYZ":
    =--ТЕКСТРАЗД(ПОДСТАВИТЬ(A1;"-";" ");" ";2)

    Функция заменяет дефисы на пробелы, разбивает строку по пробелам и возвращает второй элемент (123), который преобразуется в число двойным минусом (--).

  • 🔢 Вытащить число перед "кг" в "Вес нетто: 10.5 кг":
    =--ЗАМЕНИТЬРЕГ(A1;"^.+?(\d+\.?\d*)\s*кг.+$";"$1")

    Регулярное выражение ищет первую группу цифр перед "кг" и заменяет всю строку на найденное число.

Критичная особенность: эти функции работают только в Excel 365 и Excel 2021. В старых версиях (2019 и ранее) для регулярных выражений потребуется VBA или надстройка Power Query.

Убедиться, что версия Excel не старше 2021|

Проверить наличие пробелов перед/после чисел|

Заменить десятичные запятые на точки|

Сохранить оригинальные данные в отдельном столбце-->

Метод 4: Power Query — мощный инструмент для очистки данных

Power Query (доступен в Excel 2016+) — это встроенный ETL-инструмент для трансформации данных. Он идеален для обработки больших массивов ячеек с числами в тексте. Алгоритм действий:

  1. Выделите исходные данные → перейдите на вкладку ДанныеИз таблицы/диапазона.
  2. В открывшемся редакторе Power Query выберите столбец с текстом → ТрансформироватьИзвлечьТекст до разделителя или Текст после разделителя.
  3. Укажите разделитель (например, " кг") и подтвердите.
  4. Измените тип данных столбца на Числовой.
  5. Нажмите Закрыть и загрузить.

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

  • ✅ Обрабатывает миллионы строк без замедления.
  • ✅ Сохраняет шаги трансформации для повторного использования.
  • ✅ Позволяет объединять данные из нескольких источников.

Пример: если у вас есть столбец с данными "10 ящиков по 5 кг", в Power Query можно:

  1. Разделить текст по слову "по" → получите два столбца: "10 ящиков" и "5 кг".
  2. Из каждого извлечь числа с помощью Текст до разделителя (разделитель — пробел).
  3. Перемножить результаты: 10 * 5 = 50 кг.
Как автоматизировать обновление данных в Power Query?

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

Метод 5: Пользовательские функции на VBA (для продвинутых)

Если вам регулярно приходится работать с числами в тексте, имеет смысл создать собственную функцию на VBA. Например, функция =ИЗВЛЕЧЬЧИСЛО(текст) может извлекать первое число из любой строки:

Function ИЗВЛЕЧЬЧИСЛО(rng As Range) As Double

Dim str As String, i As Integer, numStr As String

str = rng.Value

numStr = ""

For i = 1 To Len(str)

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

numStr = numStr & Mid(str, i, 1)

End If

Next i

If numStr <> "" Then

numStr = Replace(numStr, ",", ".")

ИЗВЛЕЧЬЧИСЛО = CDbl(numStr)

Else

ИЗВЛЕЧЬЧИСЛО = 0

End If

End Function

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

  1. Нажмите Alt + F11, чтобы открыть редактор VBA.
  2. Вставьте код в новый модуль (InsertModule).
  3. Сохраните файл как Macro-Enabled Workbook (.xlsm).
  4. Теперь в Excel можно использовать =ИЗВЛЕЧЬЧИСЛО(A1).

Функция обрабатывает:

  • 🔹 Целые числа: "10 кг"10.
  • 🔹 Дробные числа: "3.14 м"3,14.
  • 🔹 Числа с запятыми: "1,5 л"1,5 (заменяет запятую на точку).
  • 🔹 Текст без чисел: "Нет данных"0.
⚠️ Внимание: макросы могут быть отключены по умолчанию из-за настроек безопасности. Чтобы разрешить их выполнение, перейдите в Файл → Параметры → Центр управления безопасностью → Параметры центра управления безопасностью → Параметры макросов и выберите "Включить все макросы" (не рекомендуется для файлов из ненадёжных источников).

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

Даже опытные пользователи допускают ошибки при работе с числами в тексте. Рассмотрим самые распространённые:

Ошибка Причина Решение
Формула возвращает #ЗНАЧ! В ячейке нет чисел или функция ЗНАЧЕН применяется к тексту без цифр. Добавьте проверку =ЕСЛИОШИБКА(ЗНАЧЕН(...);0).
Неправильное округление Функции вроде ЛЕВСИМВ обрезают дробную часть (например, "10.5"10). Используйте ПСТР с динамической длиной или регулярные выражения.
Медленная работа файла Слишком много формул массива или вложенных ЕСЛИ. Замените формулы на Power Query или VBA.

Ещё одна частая проблема — разные разделители. Например, в одном столбце могут быть данные "10,5 кг", а в другом — "10.5 kg". Чтобы унифицировать их, используйте:

=ПОДСТАВИТЬ(ПОДСТАВИТЬ(A1;",";".");" ";"")

Эта формула заменяет запятые на точки и удаляет пробелы, подготавливая данные для ЗНАЧЕН.

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

Можно ли суммировать ячейки с текстом напрямую, без извлечения чисел?

Нет, стандартные функции Excel (СУММ, СРЗНАЧ) игнорируют текстовые ячейки. Однако можно использовать формулу массива:

=СУММ(--ТЕКСТРАЗД(ПОДСТАВИТЬ(A1:A10;" кг";" ");" "))

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

Как извлечь число из формата "1 000 руб." (с пробелом-разделителем)?

Используйте комбинацию ПОДСТАВИТЬ и ЗНАЧЕН:

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

Сначала удаляется " руб.", затем пробелы, после чего строка преобразуется в число.

Почему после извлечения числа оно отображается как дата (например, 10-май)?

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

  1. Перед вводом формулы отформатируйте ячейку как Числовой или Общий.
  2. Используйте апостроф перед числом: '=ЗНАЧЕН(A1) (временное решение).
Как обработать данные в формате "от 10 до 20 кг" (диапазон чисел)?

Для извлечения обоих чисел используйте Power Query или VBA. Пример на VBA:

Function ИЗВЛЕЧЬДИАПАЗОН(rng As Range, num As Integer) As Double

Dim str As String, arr() As String

str = rng.Value

str = Replace(str, "от ", "")

str = Replace(str, " до ", " ")

arr = Split(str, " ")

If num = 1 Then ИЗВЛЕЧЬДИАПАЗОН = CDbl(arr(0)) Else ИЗВЛЕЧЬДИАПАЗОН = CDbl(arr(1))

End Function

Теперь =ИЗВЛЕЧЬДИАПАЗОН(A1;1) вернёт первое число, а =ИЗВЛЕЧЬДИАПАЗОН(A1;2) — второе.

Есть ли надстройки для упрощения работы с такими данными?

Да, популярные надстройки:

  • 🛠️ Kutools for Excel — имеет инструмент "Extract Numbers" (извлечение чисел).
  • 🛠️ Ablebits — функция "Convert text to numbers".
  • 🛠️ Power Tools — пакет для очистки данных.

Все они платные, но предлагают бесплатные пробные версии.