Excel-formel: Returner matrise med INDEX-funksjon -

Innholdsfortegnelse

Generisk formel

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

Sammendrag

For å få INDEX til å returnere en rekke elementer til en annen funksjon, kan du bruke et uklart triks basert på IF- og N-funksjonene. I eksemplet vist er formelen i E5:

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

der "data" er det navngitte området B5: B10.

Forklaring

Det er overraskende vanskelig å få INDEX til å returnere mer enn en verdi til en annen funksjon. For å illustrere kan følgende formel brukes til å returnere de tre første elementene i det nevnte området "data", når de angis som en formel med flere celler.

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

Resultatene kan sees i området D10: F10, som korrekt inneholder 10, 15 og 20.

Men hvis vi pakker inn formelen i SUM-funksjonen:

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

Det endelige resultatet er 10, mens det skal være 45, selv om det angis som en matriseformel. Problemet er at INDEX bare returnerer det første elementet i matrisen til SUM-funksjonen. For å tvinge INDEX til å returnere flere elementer til SUM, kan du pakke matrisekonstanten i N- og IF-funksjonene slik:

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

som gir et riktig resultat på 45. Tilsvarende denne formelen:

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

returnerer riktig 60, summen av 10, 20 og 30.

Denne uklare teknikken kalles noen ganger "dereferencing", fordi den hindrer INDEX i å håndtere resultatene som cellehenvisninger, og deretter slipper alt unntatt det første elementet i matrisen. I stedet leverer INDEX et komplett utvalg av verdier til SUM i. Jeff Weir har en god forklaring her på stackoverflow.

Merknad til leserne: Jeg er ikke helt sikker på hvorfor dette fungerer. Hvis du kan gi en klar forklaring, vil jeg oppdatere for å inkludere.

Interessante artikler...