Excel vzorec: Součet nejlepších n hodnot s kritérii -

Obecný vzorec

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

souhrn

Chcete-li shrnout prvních n hodnot do kritérií shody rozsahu, můžete použít vzorec založený na funkci VELKÝ zabalený do funkce SUMPRODUCT. V generické formě obecného vzorce (viz výše), rozsah představuje oblast buněk, které jsou ve srovnání s kritérii , hodnoty představují číselné hodnoty, ze kterých jsou vybírány nejlépe hodnoty, a N představuje myšlenku N-tého hodnoty.

V příkladu obsahuje aktivní buňka tento vzorec:

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

Kde barva je pojmenovaný rozsah B5: B12 a hodnota je pojmenovaný rozsah C5: C12.

Vysvětlení

Ve své nejjednodušší podobě vrátí LARGE hodnotu „N-té největší“ v rozsahu s touto konstrukcí:

=LARGE (range,N)

Například:

=LARGE (C5:C12,2)

vrátí 2. největší hodnotu v rozsahu C5: C12, což je v uvedeném příkladu 12.

Pokud však jako druhý argument zadáte „konstantu pole“ (např. Konstantu ve tvaru (1,2,3)) do LARGE, vrátí VELKÁ namísto jediného výsledku pole výsledků. Vzorec tedy:

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

vrátí 1., 2. a 3. největší hodnotu C5: C12 v takovém poli: (12,12,10)

Trik tedy spočívá v filtrování hodnot na základě barev před spuštěním LARGE. Děláme to s výrazem:

(color=E5)

Což má za následek pole hodnot TRUE / FALSE. Během operace násobení jsou tyto hodnoty převedeny na jedničky a nuly:

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

Konečným výsledkem tedy je, že operaci přežijí pouze hodnoty spojené s barvou „červená“:

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

a ostatní hodnoty jsou vynuceny na nulu.

Poznámka: tento vzorec nebude zpracovávat text v rozsahu hodnot. Viz. níže.

Zpracování textu v hodnotách

Pokud máte text kdekoli v rozsahu hodnot, funkce LARGE způsobí chybu #HODNOTA a zastaví vzorec v práci.

Chcete-li zpracovat text v rozsahu hodnot, můžete přidat funkci IFERROR takto:

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

Zde zachycujeme chyby z LARGE způsobené textovými hodnotami a nahrazujeme je nulou. Použití IF uvnitř LARGE vyžaduje, aby byl vzorec zadán pomocí control + shift + enter, takže místo SUMPRODUCT přepneme na SUM.

Poznámka: Narazil jsem na tento vzorec, který zveřejnil úžasný Barry Houdini na stackoverflow.

Zajímavé články...