Non c'è modo di farlo in modo nativo con le funzioni del foglio di lavoro di Excel. Se hai bisogno di questa funzionalità, dovrai utilizzare VBA.
È possibile utilizzare l'evento Worksheet_Change (). Questo si attiva quando il contenuto della cella viene modificato, ma non su un semplice ricalcolo. Ha un parametro che indica le celle che sono state modificate; puoi usare questo per vedere se devi fare qualcosa. Questo codice deve andare nell'area del codice per il foglio di lavoro che stai utilizzando. (Apri VBA con Alt + F11, nel pannello di sinistra fai doppio clic sul foglio di lavoro. Dovresti vedere qualcosa come "Microsoft Visual Basic - nome del file - [ nomefoglio (Codice)] "nella barra del titolo.)
Ovviamente, aggiorna il nome e gli intervalli del foglio come richiesto nel codice sottostante.
Private Sub Worksheet_Change(ByVal Target As Range)
Dim test As Range, src As Range, dest As Range
Set src = Worksheets("Sheet1").Range("A1")
Set dest = Worksheets("Sheet1").Range("A2")
Set test = Intersect(Target, src)
If Not (test Is Nothing) Then
dest.Formula = src.Formula
End If
End Sub
Il codice sopra riportato copierà la formula esattamente - se si fa riferimento alla cella F3 nella cella A1, si avrà anche un riferimento alla cella F3 nella cella A2. Se non vuoi che ciò accada, modifica la linea all'interno dell'istruzione If in dest.FormulaR1C1 = src.FormulaR1C1. Ciò modificherà opportunamente qualsiasi riferimento relativo nella tua formula.
Si può cambiare dest a un intervallo più ampio se si desidera impostare un gruppo di celle contemporaneamente basato sulla formula nella cella A1.
Una nota è che questo non ripristinerà automaticamente le formule nelle celle se cambierai quelle celle - cioè se cambi la formula in A2, questo non lo riporterà automaticamente, perché stiamo facendo solo l'aggiornamento quando la cella A1 i cambiamenti. Se vuoi proteggerti da questo, cambia la linea
Set test = Intersect(Target, src)
a
Set test = Intersect(Target, Union(src, dest))