
Formula generica
=SUM(firstcell:INDEX(data,rows,cols))
Sommario
Per definire un intervallo basato su un valore in un'altra cella, puoi utilizzare la funzione INDICE. Nell'esempio mostrato, la formula in J7 è:
=SUM(C5:INDEX(data,J5,J6))
dove "dati" è l'intervallo denominato B5: G9.
Spiegazione
Questa formula si basa su un comportamento specifico di INDICE - sebbene sembri che INDICE restituisca il valore in una posizione particolare, in realtà restituisce il riferimento alla posizione. Nella maggior parte delle formule, non noterai la differenza: Excel valuta semplicemente il riferimento e restituisce il valore. Questa formula utilizza questa funzione per costruire un intervallo dinamico basato sull'input del foglio di lavoro.
All'interno della funzione somma, il primo riferimento è semplicemente la prima cella dell'intervallo che copre tutte le celle possibili:
=SUM(C5:
Per ottenere l'ultima cella, usiamo INDICE. Qui, diamo a INDICE l'intervallo denominato "dati", che è l'intervallo di valori massimo possibile, e anche i valori da J5 (righe) e J6 (colonne). INDICE non restituisce un intervallo, restituisce solo una singola cella in quella posizione, E9 nell'esempio:
INDEX(data,J5,J6) // returns E9
La formula originale si riduce a:
=SUM(C5:E9)
che restituisce 300, la somma di tutti i valori in C5: E9.
La formula in J8 è quasi la stessa, ma utilizza MEDIA invece di SOMMA per calcolare una media. Quando un utente modifica i valori in J5 o J6, l'intervallo viene aggiornato e vengono restituiti nuovi risultati.
Alternativa con OFFSET
È possibile creare formule simili con la funzione OFFSET, mostrata di seguito:
=SUM(OFFSET(C5,0,0,J5,J6)) // sum =AVERAGE(OFFSET(C5,0,0,J5,J6)) // average
OFFSET è progettato per restituire un intervallo, quindi le formule sono forse più semplici da capire. Tuttavia, OFFSET è una funzione volatile e può causare problemi di prestazioni se utilizzato in fogli di lavoro più grandi e complessi.