=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 a
está na célula A1
date b
está na célula B1
e
date c
está na célulaC1
Digamos então que você colocou 31/02/2015
na célula A1
e colocou =IF(AND(DATEDIF(A1,TODAY(),"Y")>=1,ISBLANK(C1)),TODAY(),DATE(YEAR(A1)+1,MONTH(A1),DAY(A1)))
na célula A2
a 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 C1
pode 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 B1
como=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 B1
como=IF(AND(DATEDIF(A1,TODAY(),"Y")>=1,OR(C1="",C1=" ")),TODAY(),DATE(YEAR(A1)+1,MONTH(A1),DAY(A1)))