=TODAY    
date A    date B    date C

Мне нужна формула, которая вычислит мне дату Б.
Т.е. Если между датой 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 ответ1

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 . Если это так, он добавит 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)))

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .