Michelle pergunta,
Acho que estou no caminho certo com uma referência circular. Aqui está meu problema. Eu tenho duas células
A1=5
eB1=5
. O que eu quero fazer é fazer com que B1 memorize 5 e, em seguida, quero adicionar um novo valor a A1, digamos que A1 agora é igual a 10. Posso ter uma fórmula B1 que memorize 5, mas também adicione 10? Então agoraB1=15
?
Normalmente, as referências circulares são uma coisa ruim, mas às vezes podem ser usadas a nosso favor. Esta é a maneira não macro de fazer o que você deseja fazer. Só funcionará em certas situações.
- No menu do Excel, selecione Ferramentas> Opções.
- Vá para a guia Cálculo. Marque a caixa para Iterações. Altere o máximo de iterações para 1.
- Clique em OK para fechar a caixa de diálogo de opções.
- Digite 5 na célula A1.
- Insira 0 na célula B1
- Entrar
=A1+B1
na Célula B1 - Agora, conforme você insere novos valores em A1, a entrada em B1 lembrará o total antigo e adicionará o valor de A1.
Aqui está a limitação ENORME. Você não pode inserir nenhum valor em nenhum outro lugar da planilha! Sempre que você inserir um valor ou a planilha for recalculada, o valor em A1 será adicionado ao valor em B1. Assim, ao pressionar F9 várias vezes, você verá B1 aumentar 5 para cada F9.
A maneira mais segura de fazer isso é com uma pequena macro de manipulador de eventos. Você precisará adicionar este código ao painel de código da Planilha1 (supondo que você esteja trabalhando na Planilha1). O código do manipulador de eventos seria o seguinte:
Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address = “$A$1” Then Application.EnableEvents = False Range(“B1”).Value = Range(“B1”).Value + Target.Value Application.EnableEvents = True End If End Sub
Esse trecho de código é executado sempre que uma célula é alterada na planilha. Destino é uma variável de objeto especial que informa qual célula foi alterada. O manipulador de eventos verifica qual célula acabou de ser alterada. Se a célula for A1, ela adicionará o valor de A1 a B1. Temos que desligar os tratadores de evento enquanto mudamos B1 para que o tratador de evento não se chame novamente.