Faz referência à fórmula da célula em vez do valor no Excel?

Faz referência à fórmula da célula em vez do valor no Excel?

Digamos que em A1 eu tenha "=ROW()". A célula mostra '1' porque é a primeira linha da planilha.

Agora em A2 coloquei "=A1". Infelizmente, isso faz referência ao VALOR de A1, em vez da fórmula. Se referenciasse a fórmula, A2 forneceria um valor '2' (que é o que eu quero).

Se eu alterar a fórmula em A1 posteriormente, o valor de A2 também mudará, pois ele depende da fórmula em A1.

Como faço para fazer isso?

Responder1

Não há como fazer isso nativamente com funções de planilha do Excel. Se precisar dessa funcionalidade, você terá que usar o VBA.

Você pode usar o evento Worksheet_Change(). Isto será acionado quando o conteúdo da célula for alterado, mas não em um simples recálculo. Possui 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 estar na área de código da planilha que você está usando. (Abra o VBA com Alt+F11; no painel esquerdo, clique duas vezes na planilha. Você deverá ver algo como "Microsoft Visual Basic -nome do arquivo- [nome da planilha(Código)]" na barra de título.)

Obviamente, atualize o nome da planilha e os intervalos 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, também terá 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 mudar destpara um intervalo maior se quiser definir várias células de uma vez com base na fórmula da 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 a colocará de volta automaticamente, porque só estaremos fazendo a atualização quando a célula A1 mudanças. Se você quiser se proteger contra isso, mude a linha

Set test = Intersect(Target, src)

para

Set test = Intersect(Target, Union(src, dest))

Responder2

Você pode conseguir isso com tabelas (a partir do Excel 2007: selecione seu intervalo e depois: Inserir - Tabela;a primeira linha precisa conter títulos).
Sempre que você alterar uma fórmula, ela será atualizada em toda a coluna (ou será perguntado se deseja que ela seja atualizada se a fórmula na coluna não for a mesma antes da alteração).

Atualizar

Aquivocê encontra uma descrição detalhada de como criar uma coluna calculada em uma tabela.
Agora, se você alterar a fórmula em qualquer uma das células, toda a coluna será atualizada.(Suporte de escritório)
Se esse não for o seu caso, certifique-se de que "preencher fórmulas em tabelas para criar colunas calculadas" esteja marcado na guia Arquivo - Opções - Revisão - "AutoFormatar conforme você digita".

informação relacionada