расчет даты в excel на основе других дат

расчет даты в excel на основе других дат
          =TODAY    
date A    date B    date C

Мне нужна формула, которая вычислит дату B.
То есть, если между датой A и =TODAY прошло больше года и если дата C пуста, то дата B будет такой же, как =TODAY, в противном случае дата будет такой же, как дата A плюс один год.

Мне удалось создать такую ​​формулу:

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

но это, похоже, не работает, когда разница между датой А и СЕГОДНЯ составляет более одного года.

решение1

Примечание: я нахожусь в Великобритании, поэтому в моем ответе используются даты в формате дд/мм/гггг.

Скажем:
date aнаходится в ячейке A1
date bнаходится в ячейке B1и
date cнаходится в ячейкеC1

Допустим, вы вставляете 31/02/2015в ячейку A1и вставляете =IF(AND(DATEDIF(A1,TODAY(),"Y")>=1,ISBLANK(C1)),TODAY(),DATE(YEAR(A1)+1,MONTH(A1),DAY(A1)))в ячейку A2формула работает для меня.

Как сказал @Máté Juhász в комментариях, проблема возникает, когда у вас есть что-то в ячейке C1. Если это так, то к дате в A1 будет добавлен 1 год, что сделает ее 31/02/2016 вместо сегодняшней даты 02/09/2016.

Ячейка C1может показаться вам пустой, если вы поместите в нее пробел, но Excel будет видеть пробел как данные. Поэтому для безопасности, если вы хотите проверить, что ячейка воспринимается человеком как пустая, включив пробел как пустую, вам нужно изменить логическую проверку, чтобы =OR(ISBLANK(C1),C1=" ")сделать окончательную формулу в ячейке B1как=IF(AND(DATEDIF(A1,TODAY(),"Y")>=1,OR(ISBLANK(C1),C1=" ")),TODAY(),DATE(YEAR(A1)+1,MONTH(A1),DAY(A1)))

Альтернативой =OR(ISBLANK(C1),C1=" "), которая не имеет никаких функциональных отличий, за исключением сокращения длины формулы на 6 символов, является использование альтернативы, предложенной в комментарии, которая будет =OR(C1="",C1=" ")создавать альтернативную окончательную формулу в ячейке B1как=IF(AND(DATEDIF(A1,TODAY(),"Y")>=1,OR(C1="",C1=" ")),TODAY(),DATE(YEAR(A1)+1,MONTH(A1),DAY(A1)))

Связанный контент