Формула Excel: максимальное значение с переменным столбцом -

Содержание

Общая формула

=MAX(INDEX(data,0,MATCH(column,header,0)))

Резюме

Чтобы получить максимальное значение в наборе данных, где столбец является переменным, вы можете использовать ИНДЕКС и ПОИСКПОЗ вместе с функцией МАКС. В показанном примере формула в J5:

=MAX(INDEX(data,0,MATCH(J4,header,0)))

где данные (B5: F15) и заголовок (B4: F4) являются именованными диапазонами.

Объяснение

Примечание. Если вы не знакомы с INDEX и MATCH, см .: Как использовать INDEX и MATCH.

В стандартной конфигурации функция ИНДЕКС извлекает значение в заданной строке и столбце. Например, чтобы получить значение в строке 2 и столбце 3 в заданном диапазоне:

=INDEX(range,2,3) // get value at row 2, column 3

Однако у INDEX есть особый трюк - возможность извлекать целые столбцы и строки. Синтаксис предполагает использование нуля в качестве аргумента «другой». Если вам нужен весь столбец, вы указываете строку как ноль. Если вам нужна целая строка, вы указываете столбец как ноль:

=INDEX(data,0,n) // retrieve column n =INDEX(data,n,0) // retrieve row n

В показанном примере мы хотим найти максимальное значение в заданном столбце. Изюминка в том, что столбец должен быть переменным, чтобы его можно было легко изменить. В F5 формула:

=MAX(INDEX(data,0,MATCH(J4,header,0)))

Работая изнутри, мы сначала используем функцию ПОИСКПОЗ, чтобы получить «индекс» столбца, запрошенного в ячейке J4:

MATCH(J4,header,0) // get column index

С «Зеленым» в J4 функция ПОИСКПОЗ возвращает 3, так как Зеленый - третье значение в названном заголовке диапазона . После того, как ПОИСКПОЗ вернет результат, формулу можно упростить до следующего:

=MAX(INDEX(data,0,3))

Если в качестве номера строки указан ноль, INDEX возвращает все значения в столбце 3 данных именованного диапазона . Результат возвращается в функцию MAX в виде такого массива:

=MAX((83;54;35;17;85;16;70;72;65;93;91))

И МАКС возвращает окончательный результат, 93.

Минимальное значение

Чтобы получить минимальное значение с помощью переменного столбца, вы можете просто заменить функцию MAX на функцию MIN. Формула в J6:

=MIN(INDEX(data,0,MATCH(J4,header,0)))

С ФИЛЬТРОМ

Для решения этой проблемы также можно использовать новую функцию FILTER, поскольку FILTER может фильтровать данные по строкам или по столбцам. Уловка состоит в том, чтобы создать логический фильтр, который исключит другие столбцы. СЧЁТЕСЛИ хорошо работает в этом случае, но он должен быть настроен «в обратном порядке», с J4 в качестве диапазона и заголовком для критериев:

=MAX(FILTER(data,COUNTIF(J4,header)))

После выполнения COUNTIF у нас есть:

=MAX(FILTER(data,(0,0,1,0,0)))

И ФИЛЬТР передает 3-й столбец в МАКС, как и функция ИНДЕКС выше.

Вместо СЧЁТЕСЛИ можно использовать ЕЧИСЛО + ПОИСКПОЗ:

=MAX(FILTER(data,ISNUMBER(MATCH(header,J4,0))))

Функция ПОИСКПОЗ снова настроена «в обратном порядке», так что мы получаем массив с 5 значениями, который будет служить логическим фильтром. После выполнения ISNUMBER и MATCH у нас есть:

=MAX(FILTER(data,(FALSE,FALSE,TRUE,FALSE,FALSE)))

И ФИЛЬТР снова передает 3-й столбец в МАКС.

Интересные статьи...