Excel-formel: Returmatris med INDEX-funktion -

Innehållsförteckning

Generisk formel

=SUM(INDEX(range,N(IF(1,(1,2,3)))))

Sammanfattning

För att få INDEX att returnera en uppsättning objekt till en annan funktion kan du använda ett dunkelt trick baserat på IF- och N-funktionerna. I exemplet som visas är formeln i E5:

=SUM(INDEX(data,N(IF(1,(1,2,3)))))

där "data" är det namngivna området B5: B10.

Förklaring

Det är förvånansvärt knepigt att få INDEX att returnera mer än ett värde till en annan funktion. För att illustrera kan följande formel användas för att returnera de tre första objekten i det angivna intervallet "data", när de anges som en formel med flera celler.

(=INDEX(data,(1,2,3)))

Resultaten kan ses i intervallet D10: F10, som korrekt innehåller 10, 15 och 20.

Men om vi slår in formeln i SUM-funktionen:

=SUM(INDEX(data,(1,2,3)))

Det slutliga resultatet är 10, medan det ska vara 45, även om det anges som en matrisformel. Problemet är att INDEX bara returnerar det första objektet i matrisen till SUM-funktionen. För att tvinga INDEX att returnera flera objekt till SUM kan du slå in arrayen konstant i N- och IF-funktionerna så här:

=SUM(INDEX(data,N(IF(1,(1,2,3)))))

vilket ger ett korrekt resultat på 45. På samma sätt har denna formel:

=SUM(INDEX(data,N(IF(1,(1,3,5)))))

returnerar korrekt 60, summan av 10, 20 och 30.

Denna dunkla teknik kallas ibland "dereferencing", eftersom den hindrar INDEX från att hantera resultat som cellreferenser och sedan släpper alla utom det första objektet i matrisen. Istället levererar INDEX en hel rad värden till SUM i. Jeff Weir har en bra förklaring här på stackoverflow.

Anmärkning till läsarna: Jag vet inte exakt varför det fungerar. Om du kan ge en tydlig förklaring kommer jag att uppdatera för att inkludera.

Intressanta artiklar...