Формула Excel MAX IF для поиска наибольшего значения с условиями

  • Поделись Этим
Michael Brown

В статье показано несколько различных способов получения максимального значения в 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)

    Майкл Браун — увлеченный технологический энтузиаст, стремящийся упростить сложные процессы с помощью программных инструментов. Имея более чем десятилетний опыт работы в технологической отрасли, он отточил свои навыки в Microsoft Excel и Outlook, а также в Google Sheets и Docs. Блог Майкла посвящен тому, чтобы делиться своими знаниями и опытом с другими, предоставляя простые советы и учебные пособия для повышения производительности и эффективности. Являетесь ли вы опытным профессионалом или новичком, в блоге Майкла вы найдете ценную информацию и практические советы, которые помогут вам максимально эффективно использовать эти важные программные инструменты.