Supponiamo di avere una cartella di lavoro con tre fogli di lavoro, Foglio1, Foglio2 e Foglio3. Nella colonna A1 del foglio di lavoro Sheet2 hai la formula = Sheet1! A1. Quando si copia quella formula da Sheet2 alla cella A1 di Sheet3, la formula fa ancora riferimento a Sheet1. Ma come può essere? Perché Excel non regola il riferimento del foglio, come fa i riferimenti di cella?

Come gli intervalli denominati, Excel tratta i nomi dei fogli di lavoro come assoluti. Ogni oggetto del foglio di lavoro è indipendente da tutti gli altri fogli di lavoro nella cartella di lavoro.

Quando incolli una formula che include un riferimento al foglio, tale riferimento al foglio rimane invariato in ciò che viene incollato.

Ci sono un paio di cose che puoi fare. Uno è semplicemente modificare il riferimento della formula dopo che è stato incollato in modo che faccia riferimento al foglio corretto. Se ne hai molte da modificare, puoi selezionare tutte le formule nel foglio di lavoro di destinazione (F5 | Speciale | Formule) e quindi utilizzare Trova e sostituisci per sostituire il nome del foglio di lavoro originale (Foglio1)

con il nome corretto del foglio di lavoro (Sheet2).

Se le tue esigenze di referenziazione non sono complesse, puoi utilizzare un approccio macro. Ad esempio, se si desidera che una formula in una cella particolare faccia riferimento a una cella del foglio precedente al foglio corrente, è possibile farlo tramite macro piuttosto facilmente. Considera la seguente macro:

Function PrevSheet(rCell As Range)

Application.Volatile     Dim i As Integer     i = rCell.Cells(1).Parent.Index     PrevSheet = Sheets(i - 1).Range(rCell.Address)

End Function

La macro esamina il foglio di lavoro corrente e quindi determina quale foglio di lavoro è prima di esso. Il riferimento viene quindi fatto per quel foglio di lavoro.

Dopo aver creato la macro PrevSheet, ecco un modo in cui la funzione può essere utilizzata in una cella:

=PrevSheet(A1)

Ciò restituisce il valore della cella A1 dal foglio di lavoro precedente. Se si dispone di Foglio1, Foglio2 e Foglio3 e si utilizza questa formula su Foglio3, restituisce il valore di Foglio2! A1. Se il foglio precedente è il primo foglio della cartella di lavoro o non è un foglio di lavoro, la funzione restituisce un errore #Value.

Se in seguito copi questa formula su un foglio diverso (ad esempio sul foglio 5), viene visualizzato il valore relativo alla sua nuova posizione, il che significa che recupera il valore da Foglio4! A1.

Puoi anche includere il nome di un foglio e la funzione funzionerà perfettamente:

=PrevSheet(Sheet3!A5)

Questa versione restituirà sempre Sheet2! A5 poiché sheet2 è il foglio precedente di Sheet3.

_Nota: _

Se desideri sapere come utilizzare le macro descritte in questa pagina (o in qualsiasi altra pagina dei siti ExcelTips), ho preparato una pagina speciale che include informazioni utili.

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

Questo suggerimento (3088) 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: