
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.