Формула на Excel: Върнете масив с функция INDEX -

Съдържание

Обща формула

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

Обобщение

За да накарате INDEX да върне масив от елементи на друга функция, можете да използвате неясен трик, базиран на функциите IF и N. В показания пример формулата в E5 е:

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

където "данни" е наименованият диапазон B5: B10.

Обяснение

Изненадващо е трудно да накарате INDEX да върне повече от една стойност на друга функция. За илюстрация следващата формула може да се използва за връщане на първите три елемента от посочения диапазон „данни“, когато се въведе като формула на многоклетъчен масив.

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

Резултатите могат да се видят в диапазона D10: F10, който правилно съдържа 10, 15 и 20.

Ако обаче увием формулата във функцията SUM:

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

Крайният резултат е 10, докато трябва да е 45, дори ако е въведен като формула на масив. Проблемът е, че INDEX връща само първия елемент от масива към функцията SUM. За да принудите INDEX да върне множество елементи в SUM, можете да увиете константата на масива във функциите N и IF по следния начин:

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

което връща точен резултат от 45. По същия начин тази формула:

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

правилно връща 60, сумата от 10, 20 и 30.

Тази неясна техника понякога се нарича „пренасочване на референции“, тъй като спира INDEX да обработва резултатите като препратки към клетки и впоследствие отпада всички елементи, освен първия в масива. Вместо това INDEX предоставя пълен набор от стойности на SUM in. Jeff Weir има добро обяснение тук за stackoverflow.

Забележка за читателите: Не съм сигурен точно защо това работи. Ако можете да предоставите ясно обяснение, ще актуализирам, за да го включа.

Интересни статии...