Excel-formel: Summa toppvärdena med kriterier -

Generisk formel

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

Sammanfattning

För att summera de översta n-värdena i ett intervallmatchningskriterium kan du använda en formel baserad på den STORA funktionen, insvept i SUMPRODUCT-funktionen. I generisk form med formeln (ovan), intervall utgör en serie av celler som jämförs med kriterier , värden representerar numeriska värden från vilken toppvärden hämtas, och N representerar tanken på Nth värde.

I exemplet innehåller den aktiva cellen följande formel:

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

Där färg är det namngivna området B5: B12 och värdet är det namngivna området C5: C12.

Förklaring

I sin enklaste form returnerar LARGE värdet "Nth största" i ett intervall med denna konstruktion:

=LARGE (range,N)

Så till exempel:

=LARGE (C5:C12,2)

returnerar det näst största värdet i intervallet C5: C12, vilket är 12 i exemplet som visas.

Men om du anger en "arraykonstant" (t.ex. en konstant i formen (1,2,3)) till LARGE som det andra argumentet, kommer LARGE att returnera en array med resultat istället för ett enda resultat. Så formeln:

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

returnerar det 1: a, 2: a och 3: e största värdet C5: C12 i en sådan matris: (12,12,10)

Så tricket här är att filtrera värdena baserat på färg innan STORA körningar. Vi gör detta med uttrycket:

(color=E5)

Vilket resulterar i en rad sanna / falska värden. Under multiplikationsåtgärden tvingas dessa värden till en och nollor:

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

Så det slutliga resultatet är att endast värden associerade med färgen "röd" överlever operationen:

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

och de andra värdena tvingas till noll.

Obs! Den här formeln hanterar inte text i värdeintervallet. Se nedan.

Hantering av text i värden

Om du har text någonstans i värdeintervallen kommer funktionen STORA att kasta ett #VALUE-fel och stoppa formeln från att fungera.

För att hantera text i värdeområdet kan du lägga till IFERROR-funktionen så här:

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

Här fångar vi fel från STORA orsakade av textvärden och ersätter med noll. Att använda IF inuti LARGE kräver att formeln anges med kontroll + shift + enter, så vi byter till SUM istället för SUMPRODUCT.

Obs! Jag stötte på den här formeln som publicerades av den fantastiska Barry Houdini på stackoverflow.

Intressanta artiklar...