Поиск минимального или максимального значения по условию
В Microsoft Excel давно есть в стандартном наборе функции СЧЁТЕСЛИ (COUNTIF), СУММЕСЛИ (SUMIF) и СРЗНАЧЕСЛИ (AVERAGEIF) и их аналоги, позволяющие искать количество, сумму и среднее в таблице по одному или нескольким условиям. Но что если нужно найти не сумму или среднее, а минимум или максимум по условию(ям)?
Предположим, нам нужно найти минимальную цену для каждого товара в базе данных по поставщикам:
Таким образом, условием будет наименование товара (бумага, карандаши, ручки), а диапазоном для выборки — столбец с ценами.
Для будущего удобства, конвертируем исходный диапазон с ценами в «умную таблицу». Для этого выделите его и выберите на вкладке Главная — Форматировать как таблицу (Home — Format as Table) или нажмите Ctrl+T. Наша «поумневшая» таблица автоматически получит имя Таблица1, а к столбцам можно будет, соответственно, обращаться по их именам, используя выражения типа Таблица1[Товар] или Таблица1[Цена]. При желании, стандартное имя Таблица1 можно подкорректировать на вкладке Конструктор (Design), которая появляется, если щелкнуть в любую ячейку нашей «умной» таблицы. Подробнее о таких таблицах и их скрытых возможностях можно почитать здесь.
Способ 1. Функции МИНЕСЛИ и МАКСЕСЛИ в Excel 2016
Начиная с версии Excel 2016 в наборе функции Microsoft Excel наконец появились функции, которые легко решают нашу задачу — это функции МИНЕСЛИ (MINIFS) и МАКСЕСЛИ (MAXIFS). Синтаксис этих функции очень похож на СУММЕСЛИМН (SUMIFS):
=МИНЕСЛИ(Диапазон_чисел; Диапазон_проверки1; Условие1; Диапазон_проверки2; Условие2 … )
где
- Диапазон_чисел — диапазон с числами, из которых выбирается минимальное или максимальное
- Диапазон_проверки — диапазон, который проверяется на выполнение условия
- Условие — критерий отбора
Например, в нашем случае:
Просто, красиво, изящно. Одна проблема — функции МИНЕСЛИ и МАКСЕСЛИ появились только начиная с 2016 версии Excel. Если у вас (или тех, кто будет потом работать с вашим файлом) более старые версии, то придется шаманить другими способами.
Способ 2. Формула массива
В английской версии это будет, соответственно =MIN(IF(Table1[Товар]=F4;Table1[Цена]))
Не забудьте после ввода этой формулы в первую зеленую ячейку G4 нажать не Enter, а Ctrl+Shift+Enter, чтобы ввести ее как формулу массива. Затем формулу можно скопировать на остальные товары в ячейки G5:G6.
Давайте разберем логику работы этой формулы поподробнее. Функция ЕСЛИ проверяет каждую ячейку массива из столбца Товар на предмет равенства текущему товару (Бумага). Если это так, то выдается соответствующее ему значение из столбца Цена. В противном случае – логическое значение ЛОЖЬ (FALSE).
Таким образом внешняя функция МИН (MIN) выбирает минимальное не из всех значений цен, а только из тех, где товар был Бумага, т.к. ЛОЖЬ функцией МИН игнорируется. При желании, можно выделить мышью всю функцию ЕСЛИ(…) в строке формул
… и нажать на клавиатуре F9, чтобы наглядно увидеть тот самый результирующий массив, из которого потом функция МИН и выбирает минимальное значение:
Способ 3. Функция баз данных ДМИН
Этот вариант использует малоизвестную (и многими, к сожалению, недооцененную) функцию ДМИН (DMIN) из категории Работа с базой данных (Database) и требует небольшого изменения результирующей таблицы:
Как видите, зеленые ячейки с результатами транспонированы из столбца в строку и над ними добавлена мини-таблица (F4:H5) с условиями. Логика работы этой функции следующая:
- База_данных — вся наша таблица вместе с заголовками.
- Поле — название столбца из шапки таблицы, из которого выбирается минимальное значение.
- Критерий — таблица с условиями отбора, состоящая (минимально) из двух ячеек: названия столбца, по которому идет проверка (Товар) и критерия (Бумага, Карандаши, Ручки).
Это обычная формула (не формула массива), т.е. можно вводить и использовать ее привычным образом. Кроме того, в той же категории можно найти функции БДСУММ (DSUM), ДМАКС (DMAX), БСЧЁТ (DCOUNT), которые используются совершенно аналогично, но умеют находить не только минимум, но и сумму, максимум и количество значений по условию.
Способ 4. Сводная таблица
Если в исходной таблице очень много строк, но данные меняются не часто, то удобнее будет использовать сводную таблицу, т.к. формула массива и функция ДМИН могут сильно тормозить Excel.
Установите активную ячейку в любое место нашей умной таблицы и выберите на вкладке Вставка — Сводная таблица (Insert — Pivot Table). В появившемся окне нажмите ОК:
В конструкторе сводной таблицы перетащите поле Товар в область строк, а Цену в область значений. Чтобы заставить сводную вычислять не сумму (или количество), а минимум щелкните правой кнопкой мыши по любому числу и выберите в контекстном меню команду Итоги по — Минимум:
Вытаскивать данные из сводной в дальнейшие расчеты теперь можно с помощью функции ПОЛУЧИТЬ.ДАННЫЕ.СВОДНОЙ.ТАБЛИЦЫ (GET.PIVOT.DATA), которую мы подробно разбирали ранее:
Ссылки по теме
- Зачем нужна функция ПОЛУЧИТЬ.ДАННЫЕ.СВОДНОЙ.ТАБЛИЦЫ
- Выборочное вычисление суммы, среднего и т.д. по одному или нескольким критериям
- Что такое «умные таблицы» в Excel и как с ними работать
Excel для Microsoft 365 Excel для Microsoft 365 для Mac Excel для Интернета Excel 2021 Excel 2021 для Mac Excel 2019 Excel 2019 для Mac Еще…Меньше
Функция МИНЕСЛИ возвращает минимальное значение из заданных определенными условиями или критериями ячеек.
Синтаксис
МИНЕСЛИ(мин_диапазон;диапазон_условия1;условие1;[диапазон_условия2;условие2];…)
Аргумент |
Описание |
---|---|
min_range |
Фактический диапазон ячеек, для которого определяется минимальное значение. |
criteria_range1 |
Набор ячеек, оцениваемых с помощью условия. |
условия1 |
Условие в виде числа, выражения или текста, определяющее ячейки, которые имеют минимальное значение. Такой же набор условий используется для функций МАКСЕСЛИ, СУММЕСЛИМН и СРЗНАЧЕСЛИМН. |
диапазон_условия2, |
Дополнительные диапазоны и условия для них. Можно ввести до 126 пар диапазонов и условий. |
Примечания
-
Размер и форма аргументов мин_диапазон и диапазон_условияN должны быть одинаковыми. В противном случае эти функции вернут ошибку #ЗНАЧ!.
Примеры
Скопируйте данные примеров из приведенных ниже таблиц и вставьте их в ячейку A1 нового листа Excel. Чтобы отобразить результаты формул, выделите их и нажмите клавишу F2, а затем — клавишу ВВОД. При необходимости измените ширину столбцов, чтобы видеть все данные.
Пример 1
Оценка |
Вес |
---|---|
89 |
1 |
93 |
2 |
96 |
2 |
85 |
3 |
91 |
1 |
88 |
1 |
Формула |
Результат |
=МИНЕСЛИ(A2:A7,B2:B7,1) |
88 В диапазоне диапазон_условия1 ячейки B2, B6 и B7 соответствуют условию 1. Из соответствующих ячеек в диапазоне мин_диапазон ячейка A7 имеет минимальное значение. Поэтому результат равен 88. |
Пример 2
Вес |
Оценка |
---|---|
10 |
b |
11 |
a |
100 |
a |
111 |
b |
1 |
a |
1 |
a |
Формула |
Результат |
=МИНЕСЛИ(A2:A5,B3:B6,»a») |
10 Примечание: Диапазоны, заданные аргументами диапазон_условия и мин_диапазон, не параллельны, однако их форма и размер совпадают. В диапазоне диапазон_условия1 первая, вторая и четвертая ячейки соответствуют условию «a». Из соответствующих ячеек в диапазоне мин_диапазон ячейка A2 имеет минимальное значение. Поэтому результат равен 10. |
Пример 3
Вес |
Оценка |
Класс |
Уровень |
---|---|---|---|
10 |
b |
Бизнес |
100 |
11 |
a |
Техника |
100 |
12 |
a |
Бизнес |
200 |
13 |
b |
Техника |
300 |
14 |
b |
Техника |
300 |
15 |
b |
Бизнес |
400 |
Формула |
Результат |
||
=МИНЕСЛИ(A2:A7,B2:B7,»b»,D2:D7,»>100″) |
13 В диапазоне диапазон_условия1 ячейки B2, B5, B6 и B7 соответствуют условию «b». Из соответствующих ячеек в диапазоне диапазон_условия2 ячейки D5, D6 и D7 соответствуют условию >100. Наконец, из соответствующих ячеек в диапазоне мин_диапазон ячейка D5 имеет минимальное значение. Поэтому результат равен 13. |
Пример 4
Вес |
Оценка |
Класс |
Уровень |
---|---|---|---|
10 |
b |
Бизнес |
8 |
1 |
a |
Техника |
8 |
100 |
a |
Бизнес |
8 |
11 |
b |
Техника |
0 |
1 |
a |
Техника |
8 |
1 |
b |
Бизнес |
0 |
Формула |
Результат |
||
=МИНЕСЛИ(A2:A7,B2:B7,»b»,D2:D7,A8) |
1 Аргумент условие2 равен A8. Однако поскольку ячейка A8 пуста, значение аргумента считается равным нулю (0). Ячейки в диапазоне диапазон_условия2, соответствующие значению 0, — это D5 и D7. Наконец, из соответствующих ячеек в диапазоне мин_диапазон ячейка A7 имеет минимальное значение. Поэтому результат равен 1. |
Пример 5
Вес |
Оценка |
---|---|
10 |
b |
1 |
a |
100 |
a |
1 |
b |
1 |
a |
1 |
a |
Формула |
Результат |
=МИНЕСЛИ(A2:A5,B2:C6,»a») |
#ЗНАЧ! Так как размер и форма диапазонов, заданных аргументами мин_диапазон и диапазон_критерия, не совпадают, функция МИНЕСЛИ возвращает ошибку #ЗНАЧ!. |
Пример 6
Вес |
Оценка |
Класс |
Уровень |
---|---|---|---|
10 |
b |
Бизнес |
100 |
1 |
a |
Техника |
100 |
100 |
a |
Бизнес |
200 |
1 |
b |
Техника |
300 |
1 |
a |
Техника |
100 |
1 |
a |
Бизнес |
400 |
Формула |
Результат |
||
=МИНЕСЛИ(A2:A6,B2:B6,»a»,D2:D6,»>200″) |
0 Ячейки, соответствующие условию, отсутствуют. |
Дополнительные сведения
Вы всегда можете задать вопрос специалисту Excel Tech Community или попросить помощи в сообществе Answers community.
См. также
Функция МАКСЕСЛИ
Функция СУММЕСЛИМН
Функция СРЗНАЧЕСЛИМН
Функция СЧЁТЕСЛИМН
Нужна дополнительная помощь?
Подсчет максимального и минимального значения выполняется известными функциями МАКС и МИН. Бывает, что вычисления нужно произвести по группам или в зависимости от условия, как в СУММЕСЛИ.
Долгое время в Excel не было аналога СУММЕСЛИ или СРЗНАЧЕСЛИ для расчета максимального и минимального значения, поэтому использовали формулу массивов.
Пусть имеются данные
Нужно подсчитать максимальное значение в указанной группе. Название группы (критерий) введем в отдельную ячейку (D2). Пусть для начала это будет группа Б. Рядом введем следующую формулу:
=МАКС(ЕСЛИ(A2:A13=D2;B2:B13))
Это формула массивов, поэтому ввести ее нужно комбинацией Ctrl + Shift + Enter.
Теперь, меняя название группы, можно без всяких фильтров и сводных таблиц видеть максимальное значение внутри этой группы.
Как это работает? Очень просто. Первым делом нужно указать диапазон, который будет использоваться в качестве аргумента функции МАКС, то есть только те ячейки, которые соответствуют указанной группе. Так как мы заранее позаботились об удобстве использования функции, то название группы указали не внутри формулы, а в отдельной ячейке (гораздо легче менять группу). Тогда формула для нужного диапазона выглядит так.
ЕСЛИ(A2:A13=D2;B2:B13)
Указанное выражение отбирает только те значения, для которых название группы совпадает с условием в ячейке D2. Вот, как это видит Excel
На следующем этапе укажем функцию МАКС, аргументом которой выступает полученный выше массив. Excel воспринимает примерно так.
Видно, что максимальное значение внутри массива равно 31. Его и мы и увидим в ячейке с формулой. Нужно только не забыть итоговую функцию ввести комбинацией клавиш Ctrl + Shift + Enter, иначе ничего не получится. В строке формул формула массива отображается внутри фигурных скобок. Добавляются сами, специально дорисовывать не нужно.
Если функцию МАКС заменить на МИН, то по указанному условию (названию группы) будет выдаваться минимальное значение.
Функции Excel 2016 МАКСЕСЛИ (MAXIFS) и МИНЕСЛИ (MINIFS)
В MS Excel добавили новые статистические функции — МАКСЕСЛИ и МИНЕСЛИ. Обе функции имеют возможность учитывать несколько условий и некоторое время в их названиях в конце были буквы -МН. Потом убрали, хотя в скриншотах ниже используется вариант названий с -МН.
Есть ряд значений, каждое из которых входит в некоторую группу. Нужно рассчитать максимальное значение по группе А. Используем формулу МАКСЕСЛИ.
Все очень просто. Как и у СУММЕСЛИМН вначале указываем диапазон, где находится искомое максимальное значение (колонка В), затем диапазон с критериями (колонка А) и далее сам критерий (в ячейке D2). Можно указать сразу несколько условий. Таким же способом легко рассчитать минимальное значение по условию. Найдем, к примеру, минимум внутри группы Б.
Ниже показан
ролик, как рассчитать максимальное и минимальное значение по условию.
Поделиться в социальных сетях:
Нахождение максимального/ минимального значения — простая задача, но она несколько усложняется, если МАКС/ МИН нужно найти не среди всех значений диапазона, а только среди тех, которые удовлетворяют определенному условию.
Пусть имеется таблица с двумя столбцами: текстовым и числовым.
Для удобства понимания формул создадим два
именованных диапазона
для каждого из столбцов:
Текст
(
A
6:
A
30
) и
Числа
(
B6:B30
). (см.
файл примера
).
Рассмотрим несколько задач:
А.
Найдем максимальное значение среди тех чисел, которые соответствуют значению
Текст1
(критерий введем в ячейку
E6
).Т.е. будем искать максимальное значение не среди всех значений столбца
Числовые значения
, а только среди тех, у которых в той же строке в столбце
А
текстовое значение равно
Текст1
. Напишем
формулу массива
(не забудьте при вводе формулы нажать
CTRL+SHIFT+ENTER
):
=НАИБОЛЬШИЙ(ЕСЛИ(A6:A30=E6;B6:B30;»»);1)
или с
Именованными диапазонами
:
=
НАИБОЛЬШИЙ(ЕСЛИ(Текст=E6;Числа;»»);1)
Часть формулы
Текст=E6
, вернет
массив
{ИСТИНА:ЛОЖЬ:ЛОЖЬ:ЛОЖЬ:ИСТИНА:ЛОЖЬ:ЛОЖЬ:ЛОЖЬ:ИСТИНА:ЛОЖЬ:ЛОЖЬ:ЛОЖЬ: ИСТИНА:ЛОЖЬ:ЛОЖЬ:ЛОЖЬ:ИСТИНА:ЛОЖЬ:ЛОЖЬ:ЛОЖЬ:ИСТИНА:ЛОЖЬ:ЛОЖЬ:ЛОЖЬ:ЛОЖЬ} (для просмотра результата выделите эту часть формулы в
Строке формул
и нажмите клавишу
F9
). ИСТИНА соответствует строкам, у которых в столбце
Текстовые значения
содержится значение
Текст1
.
Часть формулы
ЕСЛИ(Текст=E6;Числа;»»)
, вернет
массив
{10:»»:»»:»»:-66:»»:»»:»»: -37:»»:»»:»»:-5:»»: «»:»»:4:»»:»»:»»:8:»»:»»:»»:»»}, где вместо ИСТИНА подставлено значение из числового столбца, а вместо ЛОЖЬ — значение
Пустой текст
. Вместо «» можно было бы использовать любой текстовый символ (букву) или вообще опустить (в этом случае массив будет выглядеть так {10:ЛОЖЬ:ЛОЖЬ:ЛОЖЬ:-66: ЛОЖЬ:ЛОЖЬ:ЛОЖЬ:-37:ЛОЖЬ: ЛОЖЬ: ЛОЖЬ:-5:ЛОЖЬ:ЛОЖЬ:ЛОЖЬ:4: ЛОЖЬ:ЛОЖЬ:ЛОЖЬ:8: ЛОЖЬ:ЛОЖЬ:ЛОЖЬ:ЛОЖЬ}).
Функция
НАИБОЛЬШИЙ()
со вторым параметром =1 использована вместо функции
МАКС()
, т.к. в случае, если критерию не удовлетворяет ни одна строка, то формула =
МАКС({«»:»»:»»:»»:»»:»»:»»: «»:»»:»»:»»: «»:»»:»»:»»:»»:»»:»»: «»:»»:»»:»»:»»:»»:»»})
вернет 0!, что может ввести в заблуждение. Функция
НАИБОЛЬШИЙ()
в этом случае вернет ошибку #ЧИСЛО!
Б.
Найдем максимальное значение только среди чисел принадлежащих определенному интервалу значений, например от 5 до 50. Границы можно ввести в ячейки
I
14
и
J14
. Решением является
формула массива
:=
НАИБОЛЬШИЙ(ЕСЛИ((Числа>=I14)*(Числа<=J14);Числа);1)
В.
Найдем с помощью
формулы массива
минимальное значение среди тех, которые соответствуют значению
Текст3
:=
МИН(ЕСЛИ((Текст=E7);Числа;»»);1)
Решением является
формула массива
.
Т.е. если в столбце
А
значение =
Текст3
, то учитывается значение в столбце
B
, если значение <>
Текст3
, то учитывается максимальное значение+1, т.е. заведомо НЕ минимальное. Далее функция
МИН()
возвращает минимальное значение из полученного массива, причем понятно, что ни одно из значений, где <>
Текст3,
не исказит результат (см. задачу А).
Другое решение с помощью формулы
ДМИН()
, которая не является
формулой массива
.
=ДМИН(A5:B30;B5;I8:I9)
где в диапазоне
I8:I9
содержится табличка с критерием (см.
файл примера
). Подробнее о функции
ДМИН()
см. статью
Функция ДМИН() — нахождение минимального значения по условию в MS EXCEL
.
Г.
Найдем минимальное значение, среди тех, которые больше
среднего
:
=ДМИН(A5:B30;B5;I10:I11)
где в диапазоне
I10:I11
содержится критерий
=B6>СРЗНАЧ(Числа)
Д.
Найдем максимальное значение по модулю. Из рисунка выше видно, что это -99. Для этого используйте
формулу массива
:
=ЕСЛИ(МАКС(ABS(Числа))=МАКС(Числа);МАКС(Числа);-МАКС(ABS(Числа)))
Е.
Найдем минимальное положительное число:
=
НАИМЕНЬШИЙ(Числа;СЧЁТЕСЛИ(Числа;»<=0″)+1)
— обычная формула!
=
НАИМЕНЬШИЙ(ЕСЛИ(Числа>0;Числа);1)
—
формула массива
.
СОВЕТ:
Все вышеуказанные задачи можно решить без использования
формул массива
и функции
ДМИН()
. Для этого потребуется создать дополнительный столбец, в котором будут выведены только те значения, которые удовлетворяют критериям. Затем, среди отобранных значений с помощью функций
МАКС()
или
МИН()
, определить соответственно максимальное или минимальное значение (см.
файл примера
Лист без формул массива).
Множественные условия
Вышерассмотренный подход можно распространить на случаи когда необходимо найти максимальный или минимальный для нескольких текстовых условий.
В этом случае придется записать более сложную
формулу массива
:
=
НАИМЕНЬШИЙ(ЕСЛИ(($A$6:$A$16=E6)*($B$6:$B$16=F6);$C$6:$C$16;»»);1)
В
файле примера
для наглядности настроено
Условное форматирование для выделения строк, удовлетворяющим критериям
. Кроме того, для выбора критериев использован
Выпадающий список
(см. желтые ячейки).
Аналогичным образом можно настроить формулы для нахождения минимального значения для строк, значения которых попадают в определенный диапазон.
В этом учебном материале по Excel мы рассмотрим примеры, как можно упростить формулу с помощью функции МИНЕСЛИ.
Общая формула
{=МИН(ЕСЛИ(набор_данных1=условие1;ЕСЛИ(набор_данных2=условие2;значение)))} |
Описание
Чтобы получить минимальное значение в наборе данных по нескольким условиям, вы можете использовать формулу массива, основанную на функциях МИН и ЕСЛИ. В показанном примере формула в ячейке I6 выглядит так:
{=МИН(ЕСЛИ(Цвет=G6;ЕСЛИ(Товар=H6;Цена)))} |
При цвете «Красный» и товаре «Плащ» результат составляет 8р.
Примечание. Это формула массива, которую необходимо вводить с помощью Ctrl+Shift+Enter.
Пояснение
В этом примере используются следующие именованные диапазоны:
- «Цвет» = B6:B12
- «Товар» = C6:C12
- «Цена» = E6:E12.
В этом примере у нас есть цены на товары в разных регионах.
Цель состоит в том, чтобы найти минимальную цену для данного цвета и товара.
В этой формуле используются две вложенные функции ЕСЛИ, заключенные внутри МИН, чтобы вернуть минимальную цену с использованием двух условий.
Начиная с логической проверки первого оператора ЕСЛИ, Цвет = G6, значения в именованном диапазоне «Цвет» (B6:B12) сравниваются со значением в ячейке G6, «Красный». Результатом является такой массив:
{ИСТИНА;ИСТИНА;ИСТИНА;ЛОЖЬ;ЛОЖЬ;ЛОЖЬ;ЛОЖЬ} |
В логической проверке для второго оператора ЕСЛИ, Товар = H6, значения в именованном диапазоне «Товар» (C6:C12) сравниваются со значением в ячейке H6, «Плащ». Результатом является такой массив:
{ИСТИНА;ИСТИНА;ИСТИНА;ИСТИНА;ИСТИНА;ИСТИНА;ЛОЖЬ} |
«Значение, если истинно» для 2-го оператора ЕСЛИ, именованный диапазон «Цена» (E6:E12), который представляет собой массив, подобный этому:
Цена возвращается для каждого элемента в этом диапазоне только в том случае, если результатом первых двух массивов выше является ИСТИНА для элементов в соответствующих позициях. В показанном примере финальный массив внутри МИН выглядит так:
{11;8;9;ЛОЖЬ;ЛОЖЬ;ЛОЖЬ;ЛОЖЬ} |
Обратите внимание, что «Истинны» только цены, находящиеся в позиции, где Цвет — «Красный», а Товар — «Плащ».
Затем функция МИН возвращает наименьшую цену, автоматически игнорируя значения ЛОЖЬ.
Альтернативный синтаксис с использованием булевой логики
Вы также можете использовать следующую формулу массива, которая использует только одну функцию ЕСЛИ вместе с булевой логикой:
{=МИН(ЕСЛИ((Цвет=G6)*(Товар=H6);Цена))} |
Преимущество этого синтаксиса состоит в том, что, возможно, проще добавить дополнительные условия без добавления дополнительных вложенных функций ЕСЛИ.
Тот же примет только с функцией МИНЕСЛИ
Функция МИНЕСЛИ, представленная начиная с Excel 2016, предназначена для возврата минимумов на основе одного или нескольких условий без необходимости в формуле массива. В случае с МИНЕСЛИ формула в I6 становится:
=МИНЕСЛИ(Цена;Цвет;G6;Товар;H6) |
Примечание: МИНЕСЛИ автоматически игнорирует пустые ячейки, соответствующие условиям. Другими словами, МИНЕСЛИ не будет считать пустые ячейки, удовлетворяющие условиям, нулевыми. С другой стороны, МИНЕСЛИ вернет ноль (0), если ни одна ячейка не соответствует условиям.