Excel-formule: retourmatrix met INDEX-functie -

Inhoudsopgave

Generieke formule

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

Samenvatting

Om INDEX een reeks items naar een andere functie te laten retourneren, kunt u een obscure truc gebruiken op basis van de IF- en N-functies. In het getoonde voorbeeld is de formule in E5:

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

waarbij "data" het benoemde bereik B5: B10 is.

Uitleg

Het is verrassend lastig om INDEX meer dan één waarde naar een andere functie te laten retourneren. Ter illustratie: de volgende formule kan worden gebruikt om de eerste drie items in het benoemde bereik "gegevens" te retourneren, wanneer deze wordt ingevoerd als een matrixformule met meerdere cellen.

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

De resultaten zijn te zien in het bereik D10: F10, dat correct 10, 15 en 20 bevat.

Als we de formule echter verpakken in de functie SOM:

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

Het uiteindelijke resultaat is 10, terwijl het 45 zou moeten zijn, zelfs als het wordt ingevoerd als een matrixformule. Het probleem is dat INDEX alleen het eerste item in de array teruggeeft aan de functie SOM. Om INDEX te dwingen meerdere items naar SUM te retourneren, kunt u de matrixconstante als volgt in de N- en IF-functies verpakken:

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

wat een correct resultaat van 45 retourneert. Evenzo is deze formule:

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

retourneert correct 60, de som van 10, 20 en 30.

Deze obscure techniek wordt soms "dereferentie" genoemd, omdat het INDEX ervan weerhoudt om resultaten als celverwijzingen te behandelen en vervolgens alles behalve het eerste item in de array weg te laten. In plaats daarvan levert INDEX een volledige reeks waarden aan SUM in. Jeff Weir heeft hier een goede uitleg over stackoverflow.

Opmerking voor lezers: ik weet niet precies waarom dit werkt. Als je een duidelijke uitleg kunt geven, zal ik updaten om op te nemen.

Interessante artikelen...