Parar o cálculo quando determinada condição ocorrer


#1

Pessoal, muito boa tarde! Estou precisando de ajuda em uma planilha aqui.
De forma simplificada, estou calculando em C1 o número de dias restantes para a conclusão de um prazo, que é calculado em B1 usando a fórmula: =B1-hoje(), estando B1 em formato de data. Ou seja, o cálculo é feito diariamente.
O que eu preciso é que, quando determinada condição ocorrer (por exemplo, a célula D1 tenha um texto em específico), a célula B1 pare de realizar o cálculo diário e fixe no valor que ela apresentava quando a condição se implementou.
Por que?
Eu utilizo esse número de dias restantes para enviar um e-mail através de script, quando a célula atinge determinado valor (30 dias, 15 dias, 5 dias). Porém, eu preciso que, se outra célula estiver preenchida com “concluído” ou “suspenso”, por exemplo, os dias restantes parem de ser recalculados e congelem naquele valor, ou vou acabar sempre recebendo e-mails, mesmo que o evento monitorado já tenha acontecido.
Uma função “se” resolve facilmente como parar o cálculo quando há um texto em outra célula, a parte difícil é fazer com que o conteúdo da célula seja o número que ali estava quando ela parou de calcular.
Desde já, grato!


#2

Oi Pedro.
Pode usar o “se” mesmo:
Se(b1-hoje()<=0;b1;b1-hoje()) e coloque o anúncio “concluído” ou '“Suspenso” em outra célula.
Espero ter ajudado.


#3

Dirnei, obrigado, mas acredito que não seja a solução ou eu não entendi bem.
O número de dias restantes, em C1, diminui diariamente, porque todos os dias a função “hoje” é atualizada.
Vamos supor que quando estiver faltando 17 dias, por exemplo, eu receba o documento que estava aguardando. Então, preciso colocar “concluído” em outra célula e automaticamente o Excel deixa de calcular os dias restantes em C1 e pare em “17”, que é o último resultado. Se ele não parar, quando chegar em 15 vai me enviar um e-mail, ainda que o documento já tenha sido entregue. Além disso, vou poder monitorar quanto tempo faltava quando o documento foi entregue e utilizar os dados posteriormente.


#4

A solução talvez seja se fosse possível converter a fórmula em seu resultado, como quando usamos o F9, mas de forma automática, disparado pelo texto “concluído” de outra célula, por exemplo.


#5

Olá, @PedroJorge19. Tudo bem?

Acredito que o que deseja somente seja possível se um desenvolvedor programar este comportamento. Se tiver interesse, mande um e-mail para exlplanilhas@gmail.com com a sua planilha e um explicativo da necessidade para conversarmos.


#6

Cara isso é relativamente bem simples de fazer em VBA com um if then.
Mas seria interessante se você puder postar sua planilha apontando exatamente as células a serem alteradas e qual a condição para que essa alteração aconteça.

ficaria algo do tipo:

if [plan1].range("D1").value = "condição escolhida por você" then
[plan1].range("célula escolhida por você").value =  [plan1].range("célula escolhida por você").value 
else
[plan1].range("célula escolhida por você).Formula =  "=(célula escolhida por você) - today()" 
end if

poste sua planilha e faço isso pra você… Abrç!