cálculo de data no Excel com base em outras datas

cálculo de data no Excel com base em outras datas
          =TODAY    
date A    date B    date C

Preciso de uma fórmula que me calcule a data B.
Ou seja, se entre a data A e = HOJE passou mais de um ano e se a data C estiver vazia, a data B será igual a = HOJE, caso contrário, a data será igual à data A mais um ano.

Consegui criar uma fórmula assim:

=IF(AND(DATEDIF(date A,$date $B,"Y") >= 1, ISBLANK(date C)), TODAY(), DATE(YEAR(date A)+1,MONTH(date A),DAY(date A))) 

mas isso parece não funcionar quando a diferença entre a data A e HOJE é de mais de um ano.

Responder1

Observação: estou no Reino Unido, então minha resposta usa datas no formato dd/mm/aaaa

Digamos:
date aestá na célula A1
date bestá na célula B1e
date cestá na célulaC1

Digamos então que você colocou 31/02/2015na célula A1e colocou =IF(AND(DATEDIF(A1,TODAY(),"Y")>=1,ISBLANK(C1)),TODAY(),DATE(YEAR(A1)+1,MONTH(A1),DAY(A1)))na célula A2a fórmula funciona para mim.

Como disse @Máté Juhász nos comentários, o problema surge quando você tem algo no celular C1. Se for esse o caso, será adicionado 1 ano à data em A1, tornando-o 31/02/2016 em vez da data atual de 09/02/2016.

A célula C1pode aparecer em branco se você colocar um espaço nela, mas o Excel verá o espaço como dados. Portanto, por segurança, se você deseja verificar se uma célula está humanamente visível como em branco, incluindo um espaço em branco, você precisa alterar o teste lógico para =OR(ISBLANK(C1),C1=" ")fazer a fórmula final na célula B1como=IF(AND(DATEDIF(A1,TODAY(),"Y")>=1,OR(ISBLANK(C1),C1=" ")),TODAY(),DATE(YEAR(A1)+1,MONTH(A1),DAY(A1)))

Uma alternativa para =OR(ISBLANK(C1),C1=" "), que não tem diferença funcional a não ser reduzir o comprimento da fórmula em 6 caracteres, é utilizar a alternativa sugerida no comentário, que seria =OR(C1="",C1=" ")fazer uma fórmula final alternativa na célula B1como=IF(AND(DATEDIF(A1,TODAY(),"Y")>=1,OR(C1="",C1=" ")),TODAY(),DATE(YEAR(A1)+1,MONTH(A1),DAY(A1)))

informação relacionada