#excel #excel-formula #google-sheets-formula
#excel #excel-формула #google-таблицы-формула
Вопрос:
Я пытаюсь понять, в чем разница между DATEDIF (date1,date2,»d») и DATEDIF (date1,date2,»yd») в Excel. Это очень сбивает с толку при попытке разобраться с датами високосного года.
например
=DATEDIF("2/29/2020","3/1/2021","yd")
выдает 0
.
но когда я пытаюсь дать
=DATEDIF("2/29/2020","3/1/2021","d")
выдает 1
.
и еще одна вещь
=DATEDIF("2/1/2020","3/1/2021","yd")
дает 29 и
=DATEDIF("2/1/2019","3/1/2021","yd")
дает 28.
В некоторых статьях утверждается, что для вычислений используется год начальной даты, поэтому с этой логикой DATEDIF("2/29/2020","3/1/2021","yd")
1
вместо нуля должно быть указано. Может кто-нибудь объяснить, как выполняются вычисления и какой год учитывается для расчетов?
Комментарии:
1.
DATEDIF
является частью Excel в первую очередь для обеспечения поддержки старых рабочих книг Lotus 1-2-3 и при определенных обстоятельствах, как вы обнаружили, будет давать неточные результаты. С этим мало что можно сделать, кроме как разработать обходные пути, которые удовлетворят вашим желаемым алгоритмам.
Ответ №1:
Из документов вы можете увидеть, в чем разница.
Чтобы быть явным, YD
вариант не учитывает год, что показывает разные результаты в случае високосного года.
Комментарии:
1. можете ли вы подробнее описать «вариант YD не учитывает год, что показывает разные результаты в случае високосного года», пожалуйста?
2. и почему DATEDIF(«2/29/2020″,»3/1/2021″,» yd») дает 0, в то время как оно должно быть 1?
3. Ну, это может быть особенностью дизайна, в этом вычислении происходит то, что он рассматривает индекс даты относительно
01/01
и вычитает результаты. Он не знает о високосных годах и не ищет взаимосвязи между заданными датами.4. При всем сказанном ваш
3/1/2021
анализируется как3/1
и использует индекс невисокосного года.2/29/2020
с другой стороны, это действительная дата, и она индексирует ее таким же образом, возвращая тот же индекс, что и для3/1
варианта.5. Это просто нелепое решение для некоторого крайнего случая. Вы можете сообщить им об этом: D