Задача нахождения нескольких минимальных значений в наборе данных возникает чаще, чем кажется. Представьте: у вас список продаж за месяц, и нужно выделить топ-3 худших результатов для анализа. Или таблица с оценками студентов, где требуется найти 5 самых низких баллов. Вручную искать такие значения неэффективно — особенно если данных сотни или тысячи.
К счастью, Microsoft Excel и Google Таблицы предлагают множество инструментов для автоматизации этой задачи. От элементарных функций вроде МИН до продвинутых массивов и Power Query — вариантов масса. Но какой выбрать? Это зависит от версии программы, объёма данных и ваших навыков. В этой статье разберём 7 проверенных методов, от самых простых до профессиональных, с примерами и нюансами применения.
Особое внимание уделим динамическим диапазонам — когда минимальные значения нужно обновлять автоматически при изменении исходных данных. А для любителей автоматизации покажем, как решить задачу с помощью VBA за 3 строки кода.
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))
🔹 Как работает:
- Внутренний
ЕСЛИфильтрует пустые ячейки. СТРОКА($A$1:$A$50)-...создаёт последовательность чисел от 1 до количества непустых ячеек.НАИМЕНЬШИЙизвлекает минимальные значения по порядку.
⚠️ Важно: После ввода формулы обязательно нажмите Ctrl+Shift+Enter (в новых версиях это не требуется). Формула будет заключена в фигурные скобки {...}.
⚠️ Внимание: Массивные формулы сильно нагружают Excel при больших диапазонах (10 000+ строк). Для оптимизации разбейте задачу на несколько простых формул или используйте Power Query.
5. Способ: Power Query (для больших данных)
Power Query (вкладка Данные → Получить данные) — мощный инструмент для обработки больших массивов. Алгоритм поиска нескольких минимальных значений:
- Выделите исходный диапазон и нажмите
Данные → Из таблицы/диапазона. - В редакторе Power Query отсортируйте столбец по возрастанию.
- Добавьте индексный столбец (
Добавить столбец → Индексный столбец). - Отфильтруйте первые
Nстрок по индексу. - Нажмите
Закрыть и загрузить.
🔹 Преимущества:
- 🚀 Работает с миллионами строк (в отличие от формул).
- 🔄 Автоматически обновляется при изменении исходных данных.
- 📊 Можно добавить дополнительные столбцы (например, имена студентов рядом с оценками).
Щёлкните правой кнопкой по результату загрузки (обычно новая таблица) → выберите "Обновить". Или нажмите на вкладке "Данные" → "Обновить все".Как обновить запрос 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
🔹 Как использовать:
- Нажмите
Alt+F11, чтобы открыть редактор VBA. - Вставьте код в новый модуль (
Insert → Module). - Выделите диапазон с данными и запустите макрос (
F5).
7. Способ: Условное форматирование для визуализации
Если вам нужно не столько извлечь минимальные значения, сколько выделить их в таблице, используйте условное форматирование:
- Выделите диапазон (например,
D2:D100). - Перейдите в
Главная → Условное форматирование → Создать правило. - Выберите
Использовать формулу для определения форматируемых ячеек. - Введите формулу:
=ИЛИ(D2=НАИМЕНЬШИЙ($D$2:$D$100;1); D2=НАИМЕНЬШИЙ($D$2:$D$100;2); D2=НАИМЕНЬШИЙ($D$2:$D$100;3)) - Задайте цвет заливки (например, красный) и нажмите
ОК.
🔹 Результат: Все ячейки с первыми тремя минимальными значениями будут подсвечены. При изменении данных форматирование обновится автоматически.
=И(СЧЁТЕСЛИ($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.
Почему функция НАИМЕНЬШИЙ возвращает ошибку #ЧИСЛО?
Ошибка возникает в трёх случаях:
- Запрошенное
kбольше количества чисел в диапазоне (например,=НАИМЕНЬШИЙ(A1:A5; 10)). - В диапазоне есть текстовые или логические значения (используйте
ЕСЛИОШИБКАдля фильтрации). - Диапазон содержит ошибки (например,
#ДЕЛ/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).
Как автоматически обновлять список минимальных значений при добавлении новых данных?
Есть три надёжных способа:
- Динамические массивы (Excel 365): формулы автоматически "растягиваются" при изменении исходного диапазона.
- Power Query: настройте запрос с сортировкой и фильтрацией первых
Nстрок, затем обновите данные кнопкойОбновить все. - Таблицы Excel: преобразуйте диапазон в таблицу (
Ctrl+T), затем используйте структурированные ссылки в формулах (например,=НАИМЕНЬШИЙ(Таблица1[Столбец1]; 1)).