Excel formula: Atgriezt masīvu ar funkciju INDEX -

Satura rādītājs

Vispārēja formula

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

Kopsavilkums

Lai panāktu, ka INDEX atgriež vienību masīvu citai funkcijai, varat izmantot neskaidru triku, pamatojoties uz IF un N funkcijām. Parādītajā piemērā formula E5 ir:

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

kur "dati" ir nosauktais diapazons B5: B10.

Paskaidrojums

Ir pārsteidzoši sarežģīti panākt, lai INDEX atgrieztu vairāk nekā vienu vērtību citai funkcijai. Lai ilustrētu, nākamo formulu var izmantot, lai atgrieztu pirmos trīs vienumus nosauktajā diapazonā "dati", ievadot tos kā vairāku šūnu masīva formulu.

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

Rezultātus var redzēt diapazonā D10: F10, kurā pareizi ir 10, 15 un 20.

Tomēr, ja mēs iesaiņojam formulu funkcijā SUM:

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

Galīgais rezultāts ir 10, bet tam jābūt 45, pat ja tas tiek ievadīts kā masīva formula. Problēma ir tā, ka INDEX funkcija SUM atgriež tikai pirmo masīva elementu. Lai piespiestu INDEX atgriezt vairākus vienumus SUM, masīva konstanti var ietīt N un IF funkcijās šādi:

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

kas atgriež pareizu rezultātu 45. Tāpat šī formula:

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

pareizi atgriež 60, summu 10, 20 un 30.

Šo neskaidro paņēmienu dažreiz sauc par “novirzīšanu”, jo tas neļauj INDEX apstrādāt rezultātus kā šūnu atsauces un pēc tam nomest visus masīvā esošos vienumus, izņemot pirmo. Tā vietā INDEX piegādā pilnu vērtību masīvu SUM iekšā. Džefam Veiram šeit ir labs skaidrojums par plūsmas plūsmu.

Piezīme lasītājiem: Es neesmu precīzi pārliecināts, kāpēc tas darbojas. Ja jūs varat sniegt skaidru paskaidrojumu, es to atjaunināšu.

Interesanti raksti...