data de calcutamento no excel com base em outras datas

0
          =TODAY    
date A    date B    date C

Eu preciso de fórmula que me calcule data B. Ou seja Se entre a data A e = TODAY tiver passado 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.

Eu 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 não parece funcionar quando a diferença entre a data A e TODAY é superior a um ano.

    
por user596129 01.09.2016 / 09:54

1 resposta

1

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

Digamos que: date a esteja na célula A1 e date b esteja na célula B1 , e que date c esteja na célula C1

Digamos que você coloque 31/02/2015 na célula A1 e coloque =IF(AND(DATEDIF(A1,TODAY(),"Y")>=1,ISBLANK(C1)),TODAY(),DATE(YEAR(A1)+1,MONTH(A1),DAY(A1))) na célula A2 que a fórmula funciona para mim.

Como @ Máté Juhász disse nos comentários, o problema surge quando você tem algo na célula C1 . Se for esse o caso, ele adicionará 1 ano à data em A1, 31/02/2016, em vez da data de hoje 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ê quiser verificar se uma célula é humanamente visível como em branco incluindo um espaço em branco, será necessário alterar o teste lógico para =OR(ISBLANK(C1),C1=" ") , tornando a fórmula final na célula B1 as =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, exceto reduzir o comprimento da fórmula em 6 caracteres, é usando a alternativa sugerida no comentário, que seria =OR(C1="",C1=" ") fazendo uma fórmula final alternativa em% de célulaB1 as =IF(AND(DATEDIF(A1,TODAY(),"Y")>=1,OR(C1="",C1=" ")),TODAY(),DATE(YEAR(A1)+1,MONTH(A1),DAY(A1)))

    
por 02.09.2016 / 11:14