Формула Excel: суммировать верхние n значений с критериями -

Содержание

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

=SUMPRODUCT(LARGE((range=criteria)*(values),(1,2,3,N)))

Резюме

Чтобы суммировать верхние n значений в критерии соответствия диапазона, вы можете использовать формулу, основанную на функции НАИБОЛЬШИЙ, заключенную внутри функции СУММПРОИЗВ. В универсальной форме формулы (см. Выше) диапазон представляет собой диапазон ячеек, которые сравниваются с критериями , значения представляют собой числовые значения, из которых извлекаются верхние значения, а N представляет идею N-го значения.

В примере активная ячейка содержит эту формулу:

=SUMPRODUCT(LARGE((color=E5)*(value),(1,2,3)))

Где цвет - это именованный диапазон B5: B12, а значение - именованный диапазон C5: C12.

Объяснение

В своей простейшей форме LARGE возвращает "N-е наибольшее" значение в диапазоне с помощью этой конструкции:

=LARGE (range,N)

Так, например:

=LARGE (C5:C12,2)

вернет 2-е по величине значение в диапазоне C5: C12, которое в показанном примере равно 12.

Однако, если вы предоставите «константу массива» (например, константу в форме (1,2,3)) для LARGE в качестве второго аргумента, LARGE вернет массив результатов вместо одного результата. Итак, формула:

=LARGE (C5:C12, (1,2,3))

вернет 1-е, 2-е и 3-е наибольшее значение C5: C12 в таком массиве: (12,12,10)

Итак, уловка здесь в том, чтобы отфильтровать значения по цвету перед запуском LARGE. Делаем это с помощью выражения:

(color=E5)

В результате получается массив значений ИСТИНА / ЛОЖЬ. Во время операции умножения эти значения переводятся в единицы и нули:

=LARGE((1;0;1;0;1;1;0;0)*(12;12;10;9;8;8;7;5),(1,2,3))

Таким образом, окончательный результат состоит в том, что только значения, связанные с красным цветом, выдерживают операцию:

=SUMPRODUCT(LARGE((12;0;10;0;8;8;0;0),(1,2,3)))

а остальные значения обнуляются.

Примечание: эта формула не обрабатывает текст в диапазоне значений. См. ниже.

Обработка текста в значениях

Если у вас есть текст в любом месте диапазона значений, функция НАИБОЛЬШИЙ выдаст ошибку # ЗНАЧЕНИЕ и остановит работу формулы.

Чтобы обрабатывать текст в диапазоне значений, вы можете добавить функцию ЕСЛИОШИБКА следующим образом:

=SUM(IFERROR(LARGE(IF((color=E5),value),(1,2,3)),0))

Здесь мы перехватываем ошибки типа LARGE, вызванные текстовыми значениями, и заменяем их на ноль. Использование IF внутри LARGE требует, чтобы формула вводилась с помощью Ctrl + Shift + Enter, поэтому мы переключаемся на SUM вместо SUMPRODUCT.

Примечание: я столкнулся с этой формулой, опубликованной замечательным Барри Гудини в stackoverflow.

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