Não há como fazer isso nativamente com as funções da planilha do Excel. Se você precisar dessa funcionalidade, precisará usar o VBA.
Você pode usar o evento Worksheet_Change (). Isso será acionado quando o conteúdo da célula for alterado, mas não em um recálculo simples. Tem um parâmetro que indica as células que foram alteradas; você pode usar isso para ver se precisa fazer alguma coisa. Esse código precisa ir na área de código para a planilha que você está usando. (Abra o VBA com Alt + F11; no painel esquerdo, clique duas vezes na planilha. Você deve ver algo como "Microsoft Visual Basic - nome do arquivo - [<> sheetname (Code) ] "na barra de título.)
Obviamente, atualize o nome e os intervalos da planilha conforme exigido no código abaixo.
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
O código acima copiará a fórmula exatamente - se você se referir à célula F3 na célula A1, terá também uma referência à célula F3 na célula A2. Se você não quiser que isso aconteça, altere a linha dentro da instrução If para dest.FormulaR1C1 = src.FormulaR1C1
. Isso alterará adequadamente quaisquer referências relativas em sua fórmula.
Você pode alterar dest
para um intervalo maior se quiser definir um grupo de células de uma vez com base na fórmula na célula A1.
Uma observação é que isso não restaurará automaticamente as fórmulas nas células se você alterar essas células - ou seja, se você alterar a fórmula em A2, isso não será automaticamente colocado de volta, porque só estamos fazendo a atualização quando a célula A1 muda. Se você quiser se proteger contra isso, mude a linha
Set test = Intersect(Target, src)
para
Set test = Intersect(Target, Union(src, dest))