Поиск минимума и чисел в текстовых строках Excel

Иван Корнев·12.04.2026·4 мин

Чтобы найти минимальное значение в строке, содержащей смешанный текст и числа (например, «Товар 12 шт, цена 5, отклонение -3»), используйте формулу массива на базе функций TEXTSPLIT, VALUE и МИН. Для современных версий Excel (365, 2021) оптимальное решение выглядит так:

=МИН(ФИЛЬТР(ЗНАЧЕН(ТЕКСТРАЗД(A1; " "; )); ЕОШИБКА(ЗНАЧЕН(ТЕКСТРАЗД(A1; " "; )); "")=ЛОЖЬ))

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

Быстрый старт: Если у вас Excel 365, скопируйте формулу выше, замените A1 на вашу ячейку и нажмите Enter. Динамические массивы сделают остальное автоматически.

Специфика задачи: текст и числа в одной ячейке

Стандартные функции Excel, такие как МИН(), игнорируют текстовые значения. Если в ячейке написано «10 кг», функция воспринимает это как текст и возвращает 0 или ошибку. Наша задача — «вытащить» числовую составляющую из строки вида:

  • «Заказ №45, вес 12.5 кг, брак 2 шт»
  • «Температура: -5, норма 20, максимум 25»
  • «А12 Б7 В99» (сложный случай без разделителей)

Решение зависит от версии вашего ПО и структуры данных.

Решение для Excel 365 и 2021 (Динамические массивы)

В новых версиях появилась функция ТЕКСТРАЗД (англ. TEXTSPLIT), которая идеально подходит для разделения строки по пробелам или запятым.

Шаг 1: Разделение строки

Используем ТЕКСТРАЗД(ячейка; " ") для получения массива элементов.

Шаг 2: Преобразование в числа

Функция ЗНАЧЕН (англ. VALUE) пытается превратить каждый элемент в число. Текст становится ошибкой #ЗНАЧ!.

Шаг 3: Фильтрация и поиск минимума

Оборачиваем все в ФИЛЬТР, чтобы оставить только числа, и применяем МИН.

Готовая формула:

=МИН(ФИЛЬТР(ЗНАЧЕН(ТЕКСТРАЗД(A1; " ")); ЕОШИБКА(ЗНАЧЕН(ТЕКСТРАЗД(A1; " ")); "")=ЛОЖЬ))

Примечание: В английской версии: =MIN(FILTER(VALUE(TEXTSPLIT(A1, " ")), ISERROR(VALUE(TEXTSPLIT(A1, " ")))=FALSE))

Универсальный разделитель: Если числа разделены не только пробелами, но и запятыми, передайте в ТЕКСТРАЗД массив разделителей: ТЕКСТРАЗД(A1; {" ";"."}).

Методы для старых версий (Excel 2016, 2019)

В версиях без динамических массивов и функции ТЕКСТРАЗД задача решается сложнее. Есть два пути: использование вспомогательных столбцов или макросов.

Вариант А: Вспомогательные столбцы

  1. Скопируйте исходную строку.
  2. Используйте «Текст по столбцам» (вкладка Данные -> Текст по столбцам), выбрав разделитель «пробел».
  3. Данные распределятся по соседним ячейкам (B1, C1, D1...).
  4. В новой строке примените формулу проверки: =ЕСЛИОШИБКА(ЗНАЧЕН(B1); ""). Протяните её вправо.
  5. Найдите минимум полученного ряда: =МИН(2:2) (где 2 — номер строки с очищенными числами).

Вариант Б: Пользовательская функция (VBA)

Если обработка требуется часто, лучше создать свою функцию. Нажмите Alt+F11, вставьте новый модуль и добавьте код:

Function GetMinFromText(rng As Range) As Double
    Dim arr() As String
    Dim i As Integer
    Dim minVal As Double
    Dim currentVal As Double
    Dim firstNum As Boolean
    
    arr = Split(rng.Value, " ")
    firstNum = True
    
    For i = LBound(arr) To UBound(arr)
        If IsNumeric(arr(i)) Then
            currentVal = CDbl(arr(i))
            If firstNum Then
                minVal = currentVal
                firstNum = False
            ElseIf currentVal < minVal Then
                minVal = currentVal
            End If
        End If
    Next i
    
    If firstNum Then
        GetMinFromText = 0 ' Или ошибка, если чисел нет
    Else
        GetMinFromText = minVal
    End If
End Function

Теперь в ячейке можно писать =GetMinFromText(A1).

Как извлечь ВСЕ числа из строки списком

Иногда нужно не только найти минимум, но и получить список всех чисел для дальнейшего анализа.

В Excel 365 используйте конструкцию с LET для оптимизации (чтобы не вычислять ТЕКСТРАЗД дважды):

=LET(
  tokens; ТЕКСТРАЗД(A1; " ");
  nums; ЗНАЧЕН(tokens);
  ФИЛЬТР(nums; ЕОШИБКА(nums; "")=ЛОЖЬ)
)

Эта формула вернет вертикальный массив всех найденных чисел. Вы можете сразу применить к результату другие функции: СУММ(...), СРЗНАЧ(...) или НАИМЕНЬШИЙ(...; 2) для поиска второго по величине значения.

Таблица: Сравнение методов обработки

МетодВерсия ExcelСложностьГибкость
Формула с TEXTSPLIT365, 2021+НизкаяВысокая (работает с любыми разделителями)
Текст по столбцамЛюбаяСредняяНизкая (требует лишних ячеек)
Макрос VBAЛюбаяВысокая (настройка)Максимальная (любая логика парсинга)
НадстройкиЛюбаяСредняяЗависит от надстройки

Частые ошибки и нюансы локализации

При работе с числами в тексте пользователи часто сталкиваются со следующими проблемами:

  1. Разделитель десятичных: В русской локали десятичный разделитель — запятая (,), в английской — точка (.). Если в тексте «3.14», а у вас русская локаль, ЗНАЧЕН вернет ошибку.
    • Решение: Используйте ПОДСТАВИТЬ перед преобразованием: ЗНАЧЕН(ПОДСТАВИТЬ(token; "."; ",")).
  2. Слипшиеся данные: Строки вида «А12Б3» не разделятся по пробелам.
    • Решение: Требуется сложная формула с регулярными выражениями (через VBA или Power Query) или предварительная очистка данных.
  3. Отрицательные числа: Убедитесь, что знак минуса распознается корректно. Иногда вместо обычного - используется длинное тире , которое ломает функцию ЗНАЧЕН.

FAQ

Вопрос: Что делать, если в строке вообще нет чисел? Ответ: Формула с ФИЛЬТР вернет ошибку #ПУСТО!. Чтобы избежать этого, оберните всё в ЕСЛИОШИБКА(...; "Нет чисел").

Вопрос: Можно ли искать максимальное значение таким же способом? Ответ: Да, просто замените функцию МИН на МАКС в предложенных формулах. Логика извлечения чисел остается той же.

Вопрос: Работает ли это в Google Таблицах? Ответ: Да, синтаксис практически идентичен. Функции называются так же (SPLIT, VALUE, FILTER, MIN), но разделитель в формулах — запятая, а не точка с запятой.