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

Задача нахождения нескольких минимальных значений в наборе данных возникает чаще, чем кажется. Представьте: у вас список продаж за месяц, и нужно выделить топ-3 худших результатов для анализа. Или таблица с оценками студентов, где требуется найти 5 самых низких баллов. Вручную искать такие значения неэффективно — особенно если данных сотни или тысячи.

К счастью, Microsoft Excel и Google Таблицы предлагают множество инструментов для автоматизации этой задачи. От элементарных функций вроде МИН до продвинутых массивов и Power Query — вариантов масса. Но какой выбрать? Это зависит от версии программы, объёма данных и ваших навыков. В этой статье разберём 7 проверенных методов, от самых простых до профессиональных, с примерами и нюансами применения.

Особое внимание уделим динамическим диапазонам — когда минимальные значения нужно обновлять автоматически при изменении исходных данных. А для любителей автоматизации покажем, как решить задачу с помощью VBA за 3 строки кода.

📊 Какую версию Excel вы используете чаще всего?
Excel 2010-2016
Excel 2019/2021
Excel 365 (подписка)
Google Таблицы
Другая версия

1. Способ: Функция МИН с ручным смещением (для 2-3 значений)

Самый простой метод — использовать комбинацию функций МИН и НАИМЕНЬШИЙ, но с ручным указанием позиций. Подходит для небольших наборов данных (до 5-10 значений) и статических отчётов.

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

=МИН(диапазон)

Для второго минимального (исключая первое):

=НАИМЕНЬШИЙ(диапазон; 2)

Плюсы: не требует знаний продвинутых функций, работает во всех версиях Excel.

Минусы: при добавлении новых данных в диапазон формулы не обновятся автоматически. Придётся вручную корректировать ссылки.

  • 📌 Пример: Для диапазона A2:A100 вторая формула будет =НАИМЕНЬШИЙ(A2:A100; 2).
  • 🔄 Обновление: Если данные в столбце A изменятся, формулы пересчитаются, но диапазон останется фиксированным.
  • Быстрое копирование: Протяните формулу вправо, меняя последний аргумент с 2 на 3, 4 и т.д.
⚠️ Внимание: Если в данных есть повторяющиеся минимальные значения, функция НАИМЕНЬШИЙ вернёт их в порядке появления. Например, для списка [5, 2, 2, 8] второе минимальное значение будет 2 (вторая двойка), а не 5.

2. Способ: Функция НАИМЕНЬШИЙ для N значений

Функция НАИМЕНЬШИЙ (SMALL в английской версии) специально создана для поиска k-го минимального значения в массиве. Её синтаксис:

=НАИМЕНЬШИЙ(массив; k)

где k — порядковый номер искомого значения (1 — первое минимальное, 2 — второе и т.д.).

Чтобы вытащить топ-5 минимальных значений из диапазона B2:B50, достаточно протянуть формулу вправо:

  • =НАИМЕНЬШИЙ(B2:B50; 1) → 1-е минимальное
  • =НАИМЕНЬШИЙ(B2:B50; 2) → 2-е минимальное
  • ...
  • =НАИМЕНЬШИЙ(B2:B50; 5) → 5-е минимальное

🔹 Нюанс: Если в диапазоне меньше значений, чем запрашиваемый k, Excel вернёт ошибку #ЧИСЛО!. Например, =НАИМЕНЬШИЙ(B2:B10; 15) не сработает.

Убедитесь, что в диапазоне нет текстовых значений|Проверьте отсутствие пустых ячеек (или используйте =ЕСЛИОШИБКА)|Отсортируйте данные для визуальной проверки|Задайте именованный диапазон для удобства-->

3. Способ: Динамический массив с ФИЛЬТР и СОРТИРОВКА (Excel 365)

В Excel 365 и Excel 2021 появились динамические массивы — революционная функция, которая автоматически "растекается" на соседние ячейки. Для поиска нескольких минимальных значений идеально подходит комбинация:

=СОРТИРОВКА(ФИЛЬТР(диапазон; диапазон<>""); 1; 1)

где:

  • ФИЛЬТР — удаляет пустые ячейки,
  • СОРТИРОВКА(..., 1, 1) — сортирует по возрастанию.

Чтобы получить только первые 3 минимальных значения, добавьте ИНДЕКС:

=ИНДЕКС(СОРТИРОВКА(ФИЛЬТР(B2:B100; B2:B100<>"")); ПОСЛЕДОВ(3;1))

Критичный нюанс: если в данных есть повторяющиеся минимальные значения, они будут дублироваться в результате. Чтобы убрать дубли, оберните формулу в УНИК:

=УНИК(ИНДЕКС(СОРТИРОВКА(ФИЛЬТР(B2:B100; B2:B100<>"")); ПОСЛЕДОВ(5;1)))
ФормулаРезультат для [5,2,2,8,1]Примечание
=СОРТИРОВКА(B2:B6;1;1)1, 2, 2, 5, 8Все значения отсортированы
=ИНДЕКС(...;ПОСЛЕДОВ(3;1))1, 2, 2Только первые 3
=УНИК(ИНДЕКС(...))1, 2Без дублей

4. Способ: Массивные формулы (для Excel 2010-2019)

Если у вас старая версия Excel без динамических массивов, используйте массивные формулы (вводится через Ctrl+Shift+Enter). Например, чтобы найти 3 минимальных значения из диапазона C2:C50:

=НАИМЕНЬШИЙ(ЕСЛИ(СТРОКА($A$1:$A$50)-СТРОКА($A$1)+1<=СЧЁТЗ(C2:C50); ЕСЛИ(C2:C50<>""; C2:C50)); СТРОКА(A1:A3))

🔹 Как работает:

  1. Внутренний ЕСЛИ фильтрует пустые ячейки.
  2. СТРОКА($A$1:$A$50)-... создаёт последовательность чисел от 1 до количества непустых ячеек.
  3. НАИМЕНЬШИЙ извлекает минимальные значения по порядку.

⚠️ Важно: После ввода формулы обязательно нажмите Ctrl+Shift+Enter (в новых версиях это не требуется). Формула будет заключена в фигурные скобки {...}.

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

5. Способ: Power Query (для больших данных)

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

  1. Выделите исходный диапазон и нажмите Данные → Из таблицы/диапазона.
  2. В редакторе Power Query отсортируйте столбец по возрастанию.
  3. Добавьте индексный столбец (Добавить столбец → Индексный столбец).
  4. Отфильтруйте первые N строк по индексу.
  5. Нажмите Закрыть и загрузить.

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

  • 🚀 Работает с миллионами строк (в отличие от формул).
  • 🔄 Автоматически обновляется при изменении исходных данных.
  • 📊 Можно добавить дополнительные столбцы (например, имена студентов рядом с оценками).

Как обновить запрос Power Query после изменения данных?

Щёлкните правой кнопкой по результату загрузки (обычно новая таблица) → выберите "Обновить". Или нажмите на вкладке "Данные" → "Обновить все".

6. Способ: VBA-макрос для автоматизации

Если вам нужно регулярно искать несколько минимальных значений в разных файлах, напишите простой макрос. Например, этот код найдёт топ-5 минимальных значений в выделенном диапазоне и выведет их в новое окно:

Sub FindMinValues()

Dim rng As Range

Dim arr() As Variant

Dim i As Integer, N As Integer

Dim result As String

N = 5 ' Количество минимальных значений

Set rng = Selection

arr = Application.WorksheetFunction.Small(rng, Array(1, 2, 3, 4, 5))

result = "Топ-" & N & " минимальных значений:" & vbCrLf

For i = 0 To N - 1

result = result & (i + 1) & ". " & arr(i) & vbCrLf

Next i

MsgBox result, vbInformation, "Результаты поиска"

End Sub

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

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

7. Способ: Условное форматирование для визуализации

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

  1. Выделите диапазон (например, D2:D100).
  2. Перейдите в Главная → Условное форматирование → Создать правило.
  3. Выберите Использовать формулу для определения форматируемых ячеек.
  4. Введите формулу:
    =ИЛИ(D2=НАИМЕНЬШИЙ($D$2:$D$100;1); D2=НАИМЕНЬШИЙ($D$2:$D$100;2); D2=НАИМЕНЬШИЙ($D$2:$D$100;3))
  5. Задайте цвет заливки (например, красный) и нажмите ОК.

🔹 Результат: Все ячейки с первыми тремя минимальными значениями будут подсвечены. При изменении данных форматирование обновится автоматически.

=И(СЧЁТЕСЛИ($D$2:D2; D2)=1; ИЛИ(D2=НАИМЕНЬШИЙ($D$2:$D$100; ПОРЯДКОВЫЙ.НОМЕР(D2; $D$2:$D$100))))
-->

FAQ: Частые вопросы

Можно ли найти несколько минимальных значений с учётом условия (например, только для определённого товара)?

Да! Используйте функцию НАИМЕНЬШИЙЕСЛИExcel 365) или массивную формулу:

=НАИМЕНЬШИЙ(ЕСЛИ(диапазон_условия=критерий; диапазон_значений); k)

Например, для поиска 2-го минимального значения продаж товара "А":

=НАИМЕНЬШИЙ(ЕСЛИ(B2:B100="А"; C2:C100); 2)

Не забудьте ввести формулу через Ctrl+Shift+Enter в старых версиях Excel.

Почему функция НАИМЕНЬШИЙ возвращает ошибку #ЧИСЛО?

Ошибка возникает в трёх случаях:

  1. Запрошенное k больше количества чисел в диапазоне (например, =НАИМЕНЬШИЙ(A1:A5; 10)).
  2. В диапазоне есть текстовые или логические значения (используйте ЕСЛИОШИБКА для фильтрации).
  3. Диапазон содержит ошибки (например, #ДЕЛ/0!).

Решение: проверьте данные функцией =СЧЁТ(диапазон) — она вернёт количество числовых значений.

Как найти несколько минимальных значений в Google Таблицах?

В Google Таблицах работают те же принципы, но с поправками:

  • Функция SMALL (аналог НАИМЕНЬШИЙ) поддерживается.
  • Динамические массивы работают без Ctrl+Shift+Enter (как в Excel 365).
  • Для условного форматирования используйте Custom formula с аналогичными формулами.

Пример для топ-3 минимальных значений:

=ARRAYFORMULA(SMALL(FILTER(B2:B100; B2:B100<>""); {1;2;3}))
Можно ли найти минимальные значения по нескольким критериям одновременно?

Да, для этого комбинируйте функции НАИМЕНЬШИЙ и ЕСЛИМНExcel 365) или массивные формулы. Например, найдём 2-е минимальное значение продаж для товара "А" в регионе "Юг":

=НАИМЕНЬШИЙ(

ФИЛЬТР(

(B2:B100="А")*(C2:C100="Юг")*D2:D100;

(B2:B100="А")*(C2:C100="Юг")

);

2

)

В старых версиях Excel используйте:

=НАИМЕНЬШИЙ(

ЕСЛИ(1 - (B2:B100<>"А") - (C2:C100<>"Юг"); D2:D100);

2

)

(вводится через Ctrl+Shift+Enter).

Как автоматически обновлять список минимальных значений при добавлении новых данных?

Есть три надёжных способа:

  1. Динамические массивы (Excel 365): формулы автоматически "растягиваются" при изменении исходного диапазона.
  2. Power Query: настройте запрос с сортировкой и фильтрацией первых N строк, затем обновите данные кнопкой Обновить все.
  3. Таблицы Excel: преобразуйте диапазон в таблицу (Ctrl+T), затем используйте структурированные ссылки в формулах (например, =НАИМЕНЬШИЙ(Таблица1[Столбец1]; 1)).