Excel vzorec: Vrátiť pole s funkciou INDEX -

Obsah

Všeobecný vzorec

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

Zhrnutie

Ak chcete, aby INDEX vrátil pole položiek k inej funkcii, môžete použiť nejasný trik založený na funkciách IF a N. V zobrazenom príklade je vzorec v E5:

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

kde „údaj“ je pomenovaný rozsah B5: B10.

Vysvetlenie

Je prekvapivo zložité dosiahnuť, aby INDEX vrátil viac ako jednu hodnotu inej funkcii. Na ilustráciu, nasledujúci vzorec možno použiť na vrátenie prvých troch položiek v pomenovanom rozsahu „data“, keď sú zadané ako vzorec viacbunkového poľa.

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

Výsledky možno vidieť v rozmedzí D10: F10, ktoré správne obsahuje 10, 15 a 20.

Ak však zalomíme vzorec do funkcie SUMA:

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

Konečný výsledok je 10, pričom by mal byť 45, aj keď je zadaný ako maticový vzorec. Problém je v tom, že INDEX vráti iba prvú položku v poli do funkcie SUM. Ak chcete vynútiť, aby INDEX vrátil viac položiek na SUM, môžete zabaliť konštantu poľa do funkcií N a IF takto:

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

ktorá vráti správny výsledok 45. Podobne platí tento vzorec:

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

správne vráti 60, súčet 10, 20 a 30.

Táto nejasná technika sa niekedy nazýva „dereferencovanie“, pretože zastaví index INDEX v spracovaní výsledkov ako odkazov na bunky a následnom zrušení všetkých položiek v poli okrem prvej. Namiesto toho INDEX dodáva celé množstvo hodnôt do SUM palcov. Jeff Weir má dobré vysvetlenie tu na stackoverflow.

Poznámka pre čitateľov: Nie som si úplne istý, prečo to funguje. Ak môžete poskytnúť jasné vysvetlenie, aktualizujem a zahrniem.

Zaujímavé články...