Поиск второго минимального значения в наборе данных — типичная задача при анализе продаж, оценке результатов тестов или обработке статистики. В отличие от стандартного МИН(), который возвращает абсолютный минимум, нахождение второго по величине элемента требует более сложного подхода. Excel предлагает несколько способов решения этой задачи: от базовых функций до массивов и динамических формул.
В этой статье мы разберём 5 рабочих методов — от универсальных (подходящих для Excel 2010 и новее) до современных (только для Office 365 и Excel 2021). Вы узнаете, как обойти типичные ошибки при работе с повторяющимися значениями, пропусками в данных и нечисловыми ячейками. А в конце — бонус: сравнительная таблица производительности каждого метода для больших массивов (10 000+ строк).
Метод 1: Функция МАЛЬК (SMALL) — классический подход
Самый надёжный и совместимый способ — использование функции МАЛЬК() (англ. SMALL). Она возвращает k-е наименьшее значение в диапазоне. Для второго минимального достаточно указать k=2:
```excel
=МАЛЬК(диапазон; 2)
```
или на английской версии:
```excel
=SMALL(range, 2)
```
Пример: если в ячейках A1:A10 хранятся числа {5; 2; 8; 2; 10; 1}, формула =МАЛЬК(A1:A10; 2) вернёт 2 (второе по величине значение после 1).
- ✅ Работает во всех версиях Excel (начиная с 2007)
- ✅ Простота синтаксиса — всего 2 аргумента
- ⚠️ Игнорирует текстовые и пустые ячейки автоматически
- ❌ Вернёт ошибку
#ЧИСЛО!, если во втором аргументе указать число больше, чем количество числовых значений в диапазоне
⚠️ Внимание: Если в данных есть повторяющиеся минимальные значения (например, две единицы), функцияМАЛЬКвернёт второе по позиции, а не по уникальности. Чтобы получить второе уникальное значение, потребуется комбинация сЕСЛИОШИБКАилиУНИК(см. Метод 4).
Для наглядности рассмотрим пример с реальными данными:
| Ячейка | Значение | Формула | Результат |
|---|---|---|---|
| A1 | 15 | =МАЛЬК(A1:A5; 2) | 5 |
| A2 | 3 | ||
| A3 | 8 | ||
| A4 | 5 | ||
| A5 | 1 |
Метод 2: Комбинация МИН + ЕСЛИ (для старых версий Excel)
Если вы работаете в Excel 2003 или более ранней версии (где нет функции МАЛЬК), можно обойтись комбинацией МИН и ЕСЛИ. Логика проста:
- Найти абсолютный минимум (
МИН). - Исключить его из диапазона с помощью
ЕСЛИ. - Найти минимум в оставшихся данных.
Формула массива (вводится нажатием Ctrl+Shift+Enter в старых версиях):
```excel
=МИН(ЕСЛИ(A1:A10<>МИН(A1:A10); A1:A10))
```
В Excel 2019+ и Office 365 эту формулу можно вводить как обычную (без Ctrl+Shift+Enter).
- ✅ Работает даже в Excel 2000
- ✅ Не требует дополнительных столбцов
- ❌ Медленнее
МАЛЬКна больших диапазонах (10 000+ строк) - ❌ Могут возникнуть проблемы с текстовыми значениями (вернёт
#ЗНАЧ!)
⚠️ Внимание: Если в диапазоне есть пустые ячейки, формула проигнорирует их. Но если есть текст (например, "N/A"), Excel вернёт ошибку. Чтобы этого избежать, добавьте проверку на тип данных: =МИН(ЕСЛИ(ЕЧИСЛО(A1:A10); ЕСЛИ(A1:A10<>МИН(A1:A10); A1:A10))).
Исключены текстовые значения|Диапазон не содержит ошибок (#ДЕЛ/0!)|Минимум встречается только один раз|Версия Excel поддерживает формулы массива-->
Метод 3: Функция АГРЕГАТ (AGGREGATE) — гибкий вариант
Функция АГРЕГАТ (англ. AGGREGATE) появилась в Excel 2010 и позволяет гибко управлять обработкой ошибок, скрытых строк и других нюансов. Для поиска второго минимального значения используйте синтаксис:
```excel
=АГРЕГАТ(5; 6; диапазон; 2)
```
где:
- 5 — код функции МАЛЬК,
- 6 — игнорировать скрытые строки и ошибки,
- диапазон — ваш массив данных,
- 2 — порядковый номер (второе наименьшее).
Преимущество этого метода — устойчивость к "грязным" данным. Например, если в диапазоне есть ячейки с #ДЕЛ/0! или скрытые строки, АГРЕГАТ проигнорирует их, тогда как МАЛЬК вернёт ошибку.
- ✅ Игнорирует ошибки и скрытые данные
- ✅ Совместима с Excel 2010+
- ✅ Можно настраивать поведение (например, учитывать скрытые строки)
- ❌ Синтаксис сложнее, чем у
МАЛЬК
Пример с параметрами:
| Параметр | Значение | Описание |
|---|---|---|
| Функция | 5 | Эквивалент МАЛЬК |
| Параметры | 6 | Игнорировать скрытые строки и ошибки |
| k | 2 | Второе наименьшее значение |
| Диапазон | A1:A20 | Анализируемые данные |
Метод 4: Динамические массивы (Excel 365 и 2021)
В современных версиях Excel (Office 365 и Excel 2021) появились динамические массивы и новые функции, такие как УНИК (UNIQUE), СОРТ (SORT) и ПОСЛЕД (TAKE). С их помощью можно найти второе минимальное значение среди уникальных значений, игнорируя дубли.
Формула для второго уникального минимума:
```excel
=ПОСЛЕД(СОРТ(УНИК(диапазон)); 1; 2)
```
или по-английски:
```excel
=TAKE(SORT(UNIQUE(range)), 1, 2)
```
Разберём по шагам:
УНИК(диапазон)— возвращает список уникальных значений.СОРТ(...)— сортирует их по возрастанию.ПОСЛЕД(..., 1, 2)— берёт вторую строку (индекс 2) из первого столбца.
- ✅ Работает с уникальными значениями (игнорирует дубли)
- ✅ Автоматически обновляется при изменении данных
- ✅ Можно расширять для поиска 3-го, 4-го и т.д. минимума
- ❌ Требует Excel 365 или 2021
- ❌ Медленнее классических функций на больших массивах
⚠️ Внимание: Если в данных только одно уникальное значение (например, все ячейки содержат 5), формула вернёт ошибку#ЗНАЧ!. Чтобы избежать этого, оберните её вЕСЛИОШИБКА:```excel
=ЕСЛИОШИБКА(ПОСЛЕД(СОРТ(УНИК(A1:A10)); 1; 2); "Нет второго минимума")
```
Как работает функция УНИК?
Функция
УНИКвозвращает список уникальных значений из диапазона, исключая дубликаты. Например, для массива{1; 2; 2; 3}она вернёт{1; 2; 3}. Важно: порядок значений в результате зависит от исходного диапазона — если данные не отсортированы,УНИКсохранит их первоначальный порядок появления.Метод 5: Power Query — для больших данных
Если вы работаете с большими наборами данных (десятки тысяч строк), классические формулы Excel могут тормозить. В этом случае эффективнее использовать Power Query — инструмент для преобразования и анализа данных, встроенный в Excel 2016+ и Office 365.
Алгоритм действий:
- Выделите диапазон с данными.
- Перейдите на вкладку
Данные→Из таблицы/диапазона(илиGet Data → From Table/Range).- В открывшемся редакторе Power Query:
- Отсортируйте столбец по возрастанию (
Главная→Сортировка).- Удалите дубликаты (
Главная→Удалить строки→Удалить дубликаты).- Оставьте только вторую строку (
Главная→Сохранить строки→Сохранить диапазон строк, укажите1-2).Нажмите Закрыть и загрузить, чтобы вернуть результат в Excel.Преимущества метода:
- ✅ Обрабатывает миллионы строк без зависаний
- ✅ Автоматически обновляется при изменении исходных данных
- ✅ Можно добавлять дополнительные фильтры (например, игнорировать нули)
- ❌ Требует навыков работы с Power Query
- ❌ Не подходит для разовых задач (нужно настраивать запрос)
Сравнение методов: какой выбрать?
Выбор метода зависит от версии Excel, объёма данных и требований к уникальности значений. Ниже — сравнительная таблица:
Метод Версия Excel Работает с дублями? Скорость (10 000 строк) Устойчивость к ошибкам МАЛЬК2007+ Нет (возвращает второе по позиции) ⭐⭐⭐⭐⭐ Средняя МИН+ЕСЛИ2000+ Нет ⭐⭐ Низкая АГРЕГАТ2010+ Нет ⭐⭐⭐⭐ Высокая Динамические массивы 365/2021 Да (уникальные значения) ⭐⭐⭐ Высокая Power Query 2016+ Да (можно настроить) ⭐⭐⭐⭐⭐ Максимальная Критическая информация: Если в ваших данных есть повторяющиеся минимальные значения (например, две единицы), и вам нужно второе уникальное значение, используйте Метод 4 (динамические массивы) или Power Query. Остальные методы вернут дубликат, а не следующее по величине число.
Типичные ошибки и как их избежать
При поиске второго минимального значения пользователи часто сталкиваются с следующими проблемами:
- Ошибка
#ЧИСЛО!вМАЛЬК: Возникает, если во втором аргументе указано число больше, чем количество числовых значений в диапазоне. Например,=МАЛЬК(A1:A3; 5)вернёт ошибку, если вA1:A3только 3 числа.Решение: Проверьте количество данных с помощью
=СЧЁТ(A1:A10).- Текстовые значения в диапазоне: Функции
МИНиМАЛЬКигнорируют текст, ноМИН+ЕСЛИможет вернуть ошибку.Решение: Используйте
АГРЕГАТс параметром6или очистите данные.- Скрытые строки: Если данные отфильтрованы или строки скрыты вручную,
МАЛЬКих проигнорирует, аАГРЕГАТ— нет (зависит от параметров).Решение: Укажите в
АГРЕГАТпараметр5(игнорировать скрытые строки).- Пустые ячейки: Большинство функций игнорируют пустоты, но если ячейка содержит формулу, возвращающую
""(пустую строку), это может вызвать ошибку.Решение: Замените пустые строки на
0или используйтеЕПУСТОдля проверки.⚠️ Внимание: Если вы используетеМАЛЬКв Excel для Mac, учтите, что в некоторых версиях функция может работать медленнее, чем в Windows. Для больших массивов (>50 000 строк) рекомендуется использовать Power Query.FAQ: Частые вопросы
Можно ли найти второе минимальное значение без повторов?
Да. В Excel 365/2021 используйте комбинацию
УНИК+СОРТ+ПОСЛЕД(см. Метод 4). В старых версиях потребуется вспомогательный столбец с формулой=ЕСЛИ(СЧЁТЕСЛИ($A$1:A1; A1)=1; A1; ""), а затем применитеМАЛЬКк этому столбцу.Почему формула возвращает не то значение?
Наиболее вероятные причины:
- В данных есть скрытые строки или фильтры (проверьте параметры
АГРЕГАТ).- Диапазон содержит текст или ошибки (используйте
ЕЧИСЛОдля фильтрации).- Вы указали неверный порядковый номер (например,
МАЛЬК(..., 3)вместо2).Как найти второе минимальное значение по условию?
Используйте функцию
МАЛЬКЕСЛИ(англ.SMALLIFS), доступную в Excel 2019+:```excel
=МАЛЬКЕСЛИ(диапазон_значений; диапазон_условий; условие; 2)
```
Пример: найти второе минимальное значение в столбце
B, если в столбцеAстоит "Да":```excel
=МАЛЬКЕСЛИ(B1:B100; A1:A100; "Да"; 2)
```
В старых версиях Excel замените на формулу массива:
```excel
=МАЛЬК(ЕСЛИ(A1:A100="Да"; B1:B100); 2)
```
(Вводится с
Ctrl+Shift+Enterв Excel 2016 и старше.)Как автоматически обновлять результат при изменении данных?
Все перечисленные методы (кроме Power Query) обновляются автоматически при изменении исходных данных. Для Power Query:
- Щёлкните правой кнопкой по результату запроса.
- Выберите
Обновить(или настройте автоматическое обновление вСвойствах связи).Чтобы формулы пересчитывались мгновенно, проверьте настройки Excel:
Файл → Параметры → Формулы → Вычисления → Автоматически.Есть ли разница между МАЛЬК и АГРЕГАТ?
Да:
МАЛЬКпроще в использовании, но не умеет игнорировать ошибки и скрытые строки.АГРЕГАТгибче: можно настроить обработку ошибок (#ДЕЛ/0!,#ЗНАЧ!), скрытых данных и т.д. через второй аргумент.- По скорости на небольших диапазонах (<10 000 строк) разницы нет. На больших массивах
АГРЕГАТможет быть медленнее из-за дополнительных проверок.