Formuła programu Excel: zsumuj n pierwszych wartości z kryteriami -

Formuła ogólna

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

Podsumowanie

Aby zsumować n pierwszych wartości w zakresie kryteriów dopasowywania, można użyć formuły opartej na funkcji LARGE, opakowanej w funkcję SUMPRODUCT. W ogólnej postaci wzoru (powyżej) zakres reprezentuje zakres komórek, które są porównywane z kryteriami , wartości reprezentują wartości liczbowe, z których pobierane są najwyższe wartości, a N reprezentuje ideę N-tej wartości.

W przykładzie aktywna komórka zawiera następującą formułę:

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

Gdzie kolor to nazwany zakres B5: B12, a wartość to nazwany zakres C5: C12.

Wyjaśnienie

W najprostszej formie funkcja LARGE zwraca „N-tą największą” wartość w zakresie o następującej konstrukcji:

=LARGE (range,N)

Na przykład:

=LARGE (C5:C12,2)

zwróci drugą co do wielkości wartość z zakresu C5: C12, czyli 12 w pokazanym przykładzie.

Jednakże, jeśli podasz "stałą tablicową" (np. Stałą w postaci (1, 2, 3)) do LARGE jako drugi argument, LARGE zwróci tablicę wyników zamiast pojedynczego wyniku. A więc formuła:

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

zwróci pierwszą, drugą i trzecią największą wartość C5: C12 w tablicy takiej jak ta: (12,12,10)

Tak więc sztuczka polega na filtrowaniu wartości na podstawie koloru przed uruchomieniem LARGE. Robimy to za pomocą wyrażenia:

(color=E5)

Co daje tablicę wartości PRAWDA / FAŁSZ. Podczas operacji mnożenia wartości te są przekształcane w jedynki i zera:

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

Ostateczny wynik jest taki, że tylko wartości związane z kolorem „czerwonym” przetrwają operację:

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

a inne wartości są wymuszane na zero.

Uwaga: ta formuła nie obsługuje tekstu w zakresie wartości. Zobacz poniżej.

Obsługa tekstu w wartościach

Jeśli w dowolnym miejscu zakresu wartości znajduje się tekst, funkcja LARGE zgłosi błąd #ARG i zatrzyma działanie formuły.

Aby obsłużyć tekst w zakresie wartości, możesz dodać funkcję IFERROR w następujący sposób:

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

Tutaj wychwytujemy błędy z LARGE spowodowane przez wartości tekstowe i zamieniamy na zero. Używanie IF wewnątrz LARGE wymaga wprowadzenia formuły za pomocą control + shift + enter, więc przełączamy się na SUMA zamiast na SUMPRODUCT.

Uwaga: natknąłem się na tę formułę opublikowaną przez niesamowitego Barry'ego Houdiniego na stackoverflow.

Interesujące artykuły...