Оглавление
В статье показано несколько различных способов получения максимального значения в Excel на основе одного или нескольких условий, которые вы задаете.
В предыдущем уроке мы рассмотрели общие способы использования функции MAX, которая предназначена для возврата наибольшего числа в наборе данных. Однако в некоторых ситуациях вам может понадобиться углубиться в данные, чтобы найти максимальное значение на основе определенных критериев. Это можно сделать с помощью нескольких различных формул, и в этой статье описаны все возможные способы.
Формула Excel MAX IF
До недавнего времени в Microsoft Excel не было встроенной функции MAX IF для получения максимального значения на основе условий. С появлением MAXIFS в Excel 2019 мы можем делать условный максимум простым способом.
В Excel 2016 и более ранних версиях по-прежнему приходится создавать собственные формула массива путем комбинирования функции MAX с оператором IF:
{=MAX(IF( диапазон_критериев = критерии , максимальный_диапазон ))}Чтобы увидеть, как эта общая формула MAX IF работает на реальных данных, рассмотрим следующий пример. Предположим, у вас есть таблица с результатами прыжков в длину нескольких студентов. Таблица включает данные за три раунда, и вы ищете лучший результат конкретного спортсмена, скажем, Джейкоба. С именами студентов в A2:A10 и расстояниями в C2:C10, формула принимает следующий вид:
=MAX(IF(A2:A10="Jacob", C2:C10))
Помните, что формула массива всегда должна вводиться при одновременном нажатии клавиш Ctrl + Shift + Enter, в результате чего она автоматически окружается фигурными скобками, как показано на скриншоте ниже (напечатать скобки вручную не получится!).
В реальных рабочих листах удобнее вводить критерий в какую-либо ячейку, чтобы можно было легко изменить условие, не меняя формулу. Итак, вводим нужное имя в F1 и получаем следующий результат:
=MAX(IF(A2:A10=F1, C2:C10))
Как работает эта формула
В логическом тесте функции IF мы сравниваем список имен (A2:A10) с целевым именем (F1). Результатом этой операции является массив из TRUE и FALSE, где значения TRUE представляют имена, которые соответствуют целевому имени (Jacob):
{FALSE;FALSE;FALSE;FALSE;TRUE;TRUE;TRUE;TRUE;FALSE;FALSE;FALSE;FALSE}
Для значение_если_истина аргумент, мы предоставляем результаты прыжков в длину (C2:C10), так что если логический тест оценивается как TRUE, возвращается соответствующее число из столбца C. значение_если_ложно аргумент опущен, значение будет иметь значение FALSE, если условие не выполнено:
{FALSE;FALSE;FALSE;FALSE;5.48;5.42;5.57;FALSE;FALSE;FALSE;FALSE}
Этот массив передается в функцию MAX, которая возвращает максимальное число, игнорируя значения FALSE.
Совет. Чтобы увидеть внутренние массивы, о которых говорилось выше, выделите соответствующую часть формулы в рабочем листе и нажмите клавишу F9. Чтобы выйти из режима оценки формулы, нажмите клавишу Esc.
Формула MAX IF с несколькими критериями
В ситуации, когда вам нужно найти максимальное значение на основе более чем одного условия, вы можете либо:
Используйте вложенные операторы IF для включения дополнительных критериев:
{=MAX(IF( критерий_диапазона1 = критерии1 , IF( критерий_диапазона2 = критерии2 , максимальный_диапазон )))}Или обработать несколько критериев с помощью операции умножения:
{=MAX(IF(( критерий_диапазона1 = критерии1 ) * ( критерий_диапазона2 = критерии2 ), максимальный_диапазон ))}Допустим, у вас есть результаты мальчиков и девочек в одной таблице, и вы хотите найти самый длинный прыжок среди девочек в раунде 3. Чтобы это сделать, мы вводим первый критерий (female) в G1, второй критерий (3) в G2, и используем следующие формулы для вычисления максимального значения:
=MAX(IF(B2:B16=G1, IF(C2:C16=G2, D2:D16)))
=MAX(IF((B2:B16=G1)*(C2:C16=G2), D2:D16))
Поскольку обе формулы являются формулами массива, не забывайте нажимать Ctrl + Shift + Enter для их правильного заполнения.
Как показано на скриншоте ниже, формулы дают одинаковый результат, поэтому какую из них использовать - вопрос ваших личных предпочтений. Для меня формула с булевой логикой проще для чтения и построения - она позволяет добавить столько условий, сколько вы хотите, без вложения дополнительных функций IF.
Как работают эти формулы
Первая формула использует две вложенные функции IF для оценки двух критериев. В логическом тесте первого оператора IF мы сравниваем значения в столбце Gender (B2:B16) с критерием в G1 ("Female"). Результатом является массив значений TRUE и FALSE, где TRUE представляет данные, соответствующие критерию:
{FALSE; FALSE; FALSE; FALSE; TRUE; TRUE; TRUE; FALSE; FALSE; FALSE; FALSE; FALSE; FALSE; FALSE; FALSE; FALSE; FALSE; FALSE; TRUE; TRUE; TRUE}
Аналогичным образом вторая функция IF проверяет значения в столбце Round (C2:C16) на соответствие критерию в G2.
Для значение_если_истина аргумент во втором операторе IF, мы предоставляем результаты прыжков в длину (D2:D16), и таким образом мы получаем элементы, которые имеют TRUE в первых двух массивах в соответствующих позициях (т.е. элементы, где пол "женский" и раунд равен 3):
{FALSE; FALSE; FALSE; FALSE; FALSE; FALSE; FALSE; 4.63; FALSE; FALSE; FALSE; FALSE; FALSE; FALSE; FALSE; FALSE; FALSE; 4.52}
Этот последний массив поступает в функцию MAX, и она возвращает наибольшее число.
Вторая формула оценивает те же условия в рамках одного логического теста, а операция умножения работает как оператор AND:
Когда значения TRUE и FALSE используются в любой арифметической операции, они преобразуются в 1 и 0 соответственно. А поскольку умножение на 0 всегда дает ноль, результирующий массив имеет 1 только тогда, когда все условия TRUE. Этот массив оценивается в логическом тесте функции IF, который возвращает расстояния, соответствующие элементам 1 (TRUE).
MAX IF без массива
Многие пользователи Excel, включая меня, предвзято относятся к формулам массивов и стараются избавиться от них везде, где это возможно. К счастью, в Microsoft Excel есть несколько функций, которые работают с массивами нативно, и мы можем использовать одну из таких функций, а именно SUMPRODUCT, как своего рода "обертку" вокруг MAX.
Общая формула MAX IF без массива выглядит следующим образом:
= СУММАРНЫЙ ПРОДУКТ(MAX(( критерий_диапазона1 = критерии1 ) * ( критерий_диапазона2 = критерии2 ) * максимальный_диапазон ))Естественно, при необходимости вы можете добавить больше пар диапазон/критерий.
Чтобы увидеть формулу в действии, мы будем использовать данные из предыдущего примера. Цель - получить максимальный прыжок спортсменки в раунде 3:
= СУММАРНЫЙ ПРОДУКТ(MAX(((B2:B16=G1) * (C2:C16=G2) * (D2:D16))))
Эта формула конкурирует с обычным нажатием клавиши Enter и возвращает тот же результат, что и формула массива MAX IF:
Внимательно посмотрев на приведенный выше скриншот, можно заметить, что недействительные переходы, отмеченные символом "x" в предыдущих примерах, теперь имеют значения 0 в строках 3, 11 и 15, и в следующем разделе объясняется, почему.
Как работает эта формула
Как и в формуле MAX IF, мы оцениваем два критерия, сравнивая каждое значение в столбцах Gender (B2:B16) и Round (C2:C16) с критериями в ячейках G1 и G2. В результате получаем два массива значений TRUE и FALSE. Умножение элементов массивов в одинаковых позициях преобразует TRUE и FALSE в 1 и 0, соответственно, где 1 представляет элементы, удовлетворяющие обоим критериям. Третье умножениеМассив содержит результаты прыжков в длину (D2:D16). И поскольку умножение на 0 дает ноль, выживают только те элементы, которые имеют 1 (TRUE) в соответствующих позициях:
{0; 0; 0; 0; 0; 4.63; 0; 0; 0; 0; 0; 0; 0; 0; 4.52}
В случае максимальный_диапазон содержит любое текстовое значение, операция умножения возвращает ошибку #VALUE, из-за которой вся формула не будет работать.
Дальше за дело берется функция MAX и возвращает наибольшее число, удовлетворяющее заданным условиям. Полученный массив, состоящий из одного элемента {4.63}, поступает в функцию SUMPRODUCT, и она выводит максимальное число в ячейке.
Примечание. Из-за специфической логики формула работает со следующими оговорками:
- Диапазон, в котором вы ищете наибольшее значение, должен содержать только числа. Если есть текстовые значения, возвращается ошибка #VALUE!
- Формула не может оценить условие "не равно нулю" в отрицательном наборе данных. Чтобы найти максимальное значение без учета нулей, используйте формулу MAX IF или функцию MAXIFS.
Формула Excel MAX IF с логикой ИЛИ
Чтобы найти максимальное значение, когда любой из указанных условий выполняется, используйте уже знакомую формулу массива MAX IF с булевой логикой, но складывайте условия, а не умножайте их.
{=MAX(IF(( критерий_диапазона1 = критерии1 ) + ( критерий_диапазона2 = критерии2 ), максимальный_диапазон ))}В качестве альтернативы можно использовать следующую формулу без массива:
= СУММАРНЫЙ ПРОДУКТ(MAX((( критерий_диапазона1 = критерии1 ) + ( критерий_диапазона2 = критерии2 )) * максимальный_диапазон ))В качестве примера вычислим лучший результат в раундах 2 и 3. Обратите внимание, что в языке Excel задача формулируется иначе: вернуть максимальное значение, если раунд либо 2, либо 3.
С раундами, перечисленными в B2:B10, результатами в C2:C10 и критериями в F1 и H1, формула выглядит следующим образом:
=MAX(IF((B2:B10=F1) + (B2:B10=H1), C2:C10))
Введите формулу, нажав комбинацию клавиш Ctrl + Shift + Enter, и вы получите такой результат:
Максимальное значение при тех же условиях можно также найти с помощью этой формулы без массива:
=SUMPRODUCT(MAX(((B2:B10=F1) + (B2:B10=H1)) * C2:C10))
Однако в этом случае нам нужно заменить все значения "x" в столбце C нулями, поскольку SUMPRODUCT MAX работает только с числовыми данными:
Как работают эти формулы
Формула массива работает точно так же, как MAX IF с логикой AND, за исключением того, что вы объединяете критерии, используя операцию сложения вместо умножения. В формулах массива сложение работает как оператор OR:
Сложение двух массивов TRUE и FALSE (которые получаются в результате проверки значений в B2:B10 по критериям F1 и H1) дает массив из 1 и 0, где 1 представляет элементы, для которых любое из условий равно TRUE, а 0 - элементы, для которых оба условия равны FALSE. В результате функция IF "сохраняет" все элементы в C2:C10 ( значение_если_истина ), для которых любое условие является TRUE (1); остальные элементы заменяются на FALSE, поскольку значение_если_ложно аргумент не указан.
Формула без массива работает аналогичным образом. Разница в том, что вместо логической проверки IF, вы умножаете элементы массива 1's и 0's на элементы массива результатов прыжков в длину (C2:C10) в соответствующих позициях. Это обнуляет элементы, которые не удовлетворяют никакому условию (имеют 0 в первом массиве) и сохраняет элементы, которые удовлетворяют одному из условий (имеют 1 в первом массиве).массив).
MAXIFS - простой способ найти наибольшее значение с условиями
Пользователи Excel 2019, 2021 и Excel 365 избавлены от необходимости укрощать массивы для построения собственной формулы MAX IF. Эти версии Excel предоставляют долгожданную функцию MAXIFS, которая делает поиск наибольшего значения с условиями детской забавой.
В первом аргументе MAXIFS вводится диапазон, в котором должно быть найдено максимальное значение (в нашем случае D2:D16), а в последующих аргументах можно ввести до 126 пар диапазон/критерий. Например:
=MAXIFS(D2:D16, B2:B16, G1, C2:C16, G2)
Как показано на скриншоте ниже, эта простая формула без проблем обрабатывает диапазон, содержащий как числовые, так и текстовые значения:
Подробную информацию об этой функции можно найти в разделе Функция Excel MAXIFS с примерами формул.
Вот как можно найти максимальное значение с помощью условий в Excel. Я благодарю вас за чтение и надеюсь увидеть вас в нашем блоге на следующей неделе!
Рабочая тетрадь для тренировок для скачивания
Примеры формул Excel MAX IF (файл.xlsx)