Excel vzorec: Vrátit pole s funkcí INDEX -

Obsah

Obecný vzorec

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

souhrn

Chcete-li, aby INDEX vrátil pole položek jiné funkci, můžete použít nejasný trik založený na funkcích IF a N. V zobrazeném příkladu je vzorec v E5:

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

kde „data“ je pojmenovaný rozsah B5: B10.

Vysvětlení

Je překvapivě složité přimět INDEX, aby vrátil více než jednu hodnotu jiné funkci. Pro ilustraci lze následující vzorec použít k vrácení prvních tří položek v pojmenovaném rozsahu „data“, když jsou zadány jako vzorec pole s více buňkami.

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

Výsledky lze vidět v rozsahu D10: F10, který správně obsahuje 10, 15 a 20.

Pokud však zabalíme vzorec do funkce SUMA:

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

Konečný výsledek je 10, zatímco by měl být 45, i když je zadán jako maticový vzorec. Problém je v tom, že INDEX vrací funkci SUMA pouze první položku v poli. Chcete-li vynutit, aby INDEX vrátil více položek na SUM, můžete zabalit konstantu pole do funkcí N a IF takto:

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

který vrací správný výsledek 45. Podobně tento vzorec:

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

správně vrátí 60, součet 10, 20 a 30.

Tato obskurní technika se někdy nazývá „dereferencování“, protože zastaví INDEX ve zpracování výsledků jako odkazů na buňky a následném zrušení všech položek kromě první v poli. Místo toho INDEX poskytuje celou řadu hodnot do SUM palců. Jeff Weir má dobré vysvětlení zde na stackoverflow.

Poznámka pro čtenáře: Nevím přesně, proč to funguje. Pokud můžete poskytnout jasné vysvětlení, aktualizuji a zahrnu.

Zajímavé články...