Excel képlet: Visszatérő tömb INDEX függvénnyel -

Tartalomjegyzék

Általános képlet

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

Összegzés

Ahhoz, hogy az INDEX egy elemtömböt visszaküldjön egy másik függvénybe, használhat homályos trükköt az IF és az N függvény alapján. A bemutatott példában az E5 képlete a következő:

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

ahol az "adat" a B5: B10 megnevezett tartomány.

Magyarázat

Meglepően trükkös, ha az INDEX több értéket ad vissza egy másik függvénybe. Szemléltetésképpen a következő képlet használható az elnevezett tartomány "adatok" első három elemének visszaadására, ha több cellás tömbképletként adjuk meg.

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

Az eredmények a D10: F10 tartományban láthatók, amely helyesen tartalmaz 10, 15 és 20 értékeket.

Ha azonban a képletet a SUM függvénybe csomagoljuk:

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

A végeredmény 10, míg 45-nek kell lennie, még akkor is, ha tömbképletként adjuk meg. A probléma az, hogy az INDEX csak a tömb első elemét adja vissza a SUM függvényhez. Az INDEX arra kényszerítésére, hogy több elemet adjon vissza az SUM-ra, a tömb konstansát be tudja burkolni az N és IF függvényekbe:

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

amely 45-ös helyes eredményt ad vissza. Ehhez hasonlóan ez a képlet is:

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

helyesen adja vissza a 60-at, a 10, 20 és 30 összegét.

Ezt a homályos technikát néha "dereferencing" -nek hívják, mert megakadályozza, hogy az INDEX kezelje az eredményeket cellahivatkozásokként, és ezt követően a tömb első kivételével az összes elemet eldobja. Ehelyett az INDEX az értékek teljes tömbjét juttatja el a SUM-hoz. Jeff Weirnek jó magyarázata van itt a stackoverflow-n.

Megjegyzés az olvasóknak: Nem tudom pontosan, miért működik ez. Ha világos magyarázatot tud adni, akkor frissíteni fogom.

érdekes cikkek...