Fórmula da célula de referência em vez do valor no Excel?

1

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

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

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

Como faço para isso?

    
por Dan W 04.08.2015 / 02:29

2 respostas

1

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))
    
por 04.08.2015 / 09:09
0

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

Atualizar

Aqui você 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, a coluna inteira será atualizada. (Suporte do Office)
Se esse não for o seu caso, verifique se a opção "preencher fórmulas nas tabelas para criar colunas calculadas" está marcada na guia Arquivo - Opções - Proofing - "AutoFormatação ao Digitar".

    
por 04.08.2015 / 10:29