Tim ha un foglio di lavoro in cui la cella B1 contiene la formula = SUM (A1: A7).

Vuole copiare questa formula verso il basso e fare in modo che l’intervallo venga incrementato di 7 righe, in modo che la cella B2 conterrebbe la formula = SOMMA (A8: A14), la cella B3 conterrebbe = SOMMA (A15: A21), ecc. Il problema è che quando lo copia, ogni “fine” dell’intervallo viene incrementato solo di 1 dove dovrebbe essere incrementato di 7 per soddisfare le sue necessità. Si chiede come può fare in modo che Excel esegua l’incremento corretto.

Non è possibile fare in modo che Excel esegua l’incremento corretto utilizzando copia e incolla; semplicemente non lo farà. Il motivo è semplice: ci sono momenti in cui l’incremento di 1 ha senso da una prospettiva formulaica. Dato che Excel non può leggere la tua mente (almeno fino alla prossima versione:>)), presuppone che dovrebbe aumentare solo di 1.

La soluzione è cambiare la tua formula. Utilizzando un paio di funzioni del foglio di lavoro è possibile fare in modo che Excel crei l’intervallo desiderato per la somma. Considera il seguente esempio di una formula che fornirà la somma desiderata:

=SUM(INDIRECT("A" & (ROW()-1)7+1 & ":A" & (ROW()-1)7+7))

Se inserisci questa formula nella cella B1, funziona perché dà un’occhiata al numero di riga (restituito dalla funzione RIGA) della riga in cui è contenuta la formula. Poiché si trova nella riga 1, la formula viene valutata in questo modo da Excel:

=SUM(INDIRECT("A" & (ROW()-1)7+1 & ":A" & (ROW()-1)7+7))

=SUM(INDIRECT("A" & (1-1)7+1 & ":A" & (1-1)7+7))

=SUM(INDIRECT("A" & 07+1 & ":A" & 07+7))

=SUM(INDIRECT("A" & 0+1 & ":A" & 0+7))

=SUM(INDIRECT("A" & 1 & ":A" & 7))

=SUM(INDIRECT("A1:A7"))

=SUM(A1:A7)

Quello che ottieni in B1 è la somma che desideri. (La funzione INDIRETTO usa il valore nella stringa come se fosse un intervallo reale, che è quello che vuoi.) Quando copi la formula lungo la colonna, man mano che il numero di riga aumenta, la formula fornisce gli incrementi corretti di 7 su entrambe le estremità della gamma.

Ci sono altre variazioni su questa tecnica che puoi usare. L’unica differenza è che le varianti utilizzano diverse funzioni del foglio di lavoro per eseguire la stessa operazione. Ad esempio, la seguente variazione utilizza ancora la funzione ROW, ma alla fine si affida alla funzione OFFSET per calcolare l’intervallo desiderato:

=SUM(OFFSET(A1,((ROW()-1)6),0):OFFSET(A7,((ROW()-1)6),0))

Un approccio più breve che utilizza OFFSET è il seguente:

=SUM(OFFSET($A$1,ROW()*7-7,0,7,1))

Indipendentemente dall’approccio, probabilmente puoi dire che l’idea è di trovare una formula che utilizzi la riga in cui appare la formula per costruire l’intervallo che desideri veramente. Ciascuno degli esempi finora presuppone che si inizi nella cella B1. Se vuoi iniziare nella cella B2, dovrai modificare le formule per tenere conto della riga da cui stai iniziando. Per darti solo un’idea di come funziona, se partissi dalla cella B2, invece, le tre formule presentate in questo suggerimento verrebbero modificate nei seguenti modi:

=SUM(INDIRECT("A" & (ROW()-2)7+2 & ":A" & (ROW()-2)7+8))

=SUM(OFFSET(A2,((ROW()-2)6),0):OFFSET(A8,((ROW()-2)6),0))

=SUM(OFFSET($A$2,(ROW()-1)*7-7,0,7,1))

Inizia in una posizione diversa e dovrai apportare ulteriori modifiche alla formula che scegli di utilizzare.

ExcelTips è la tua fonte di formazione economica su Microsoft Excel.

Questo suggerimento (8385) si applica a Microsoft Excel 97, 2000, 2002 e 2003. Puoi trovare una versione di questo suggerimento per l’interfaccia a nastro di Excel (Excel 2007 e versioni successive) qui: