Formula di Excel: restituisce la matrice con la funzione INDICE -

Sommario

Formula generica

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

Sommario

Per fare in modo che INDICE restituisca un array di elementi a un'altra funzione, puoi utilizzare un trucco oscuro basato sulle funzioni IF e N. Nell'esempio mostrato, la formula in E5 è:

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

dove "dati" è l'intervallo denominato B5: B10.

Spiegazione

È sorprendentemente complicato ottenere che INDICE restituisca più di un valore a un'altra funzione. Per illustrare, la seguente formula può essere utilizzata per restituire i primi tre elementi nell'intervallo denominato "dati", quando immessi come formula di matrice a più celle.

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

I risultati possono essere visualizzati nell'intervallo D10: F10, che contiene correttamente 10, 15 e 20.

Tuttavia, se avvolgiamo la formula nella funzione SUM:

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

Il risultato finale è 10, mentre dovrebbe essere 45, anche se inserito come formula di matrice. Il problema è che INDICE restituisce solo il primo elemento dell'array alla funzione SOMMA. Per forzare INDEX a restituire più elementi a SUM, puoi racchiudere la costante di matrice nelle funzioni N e IF in questo modo:

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

che restituisce un risultato corretto di 45. Allo stesso modo, questa formula:

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

restituisce correttamente 60, la somma di 10, 20 e 30.

Questa tecnica oscura è talvolta chiamata "dereferenziazione", perché impedisce a INDICE di gestire i risultati come riferimenti di cella e successivamente di eliminare tutto tranne il primo elemento nella matrice. Invece, INDEX fornisce un array completo di valori a SUM in. Jeff Weir ha una buona spiegazione qui su stackoverflow.

Nota per i lettori: non sono sicuro del motivo per cui funziona. Se puoi fornire una spiegazione chiara, aggiornerò per includere.

Articoli interessanti...