Примечание: я нахожусь в Великобритании, поэтому в моем ответе используются даты в формате дд / мм / гггг
Скажем так:
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
. Если это так, он добавит 1 год к дате в А1, сделав ее 31/02/2016 вместо сегодняшней даты 02/09/2016.
Ячейка C1
может показаться пустой, если в нее вставить пробел, но Excel увидит это пространство как данные. Поэтому для безопасности, если вы хотите проверить, что ячейка видима человеком как пустая, добавив пробел как пробел, вам нужно изменить логический тест на =OR(ISBLANK(C1),C1=" ")
чтобы получить окончательную формулу в ячейке B1
as =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)))