Usando referências circulares para nossa vantagem - dicas do Excel

Michelle pergunta,

Acho que estou no caminho certo com uma referência circular. Aqui está meu problema. Eu tenho duas células A1=5e B1=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 agora B1=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+B1na 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.

Artigos interessantes...