Принятый anwer хорош. Но это долгий путь для работы хорошего бокового бара. вы можете использовать этот элемент управления, если вам нужно рабочее меню.
https://github.com/beto-rodriguez/MaterialMenu
вы может также установить его из nuget.
вот пример
Welcome
=IF(DATEDIF(A1, B1, "D")>365, QUOTIENT(DATEDIF(A1, B1, "D"), 365)&" year(s) "&
QUOTIENT(MOD(DATEDIF(A1, B1, "D"), 365), 30)&" month(s) "&
MOD(QUOTIENT(MOD(DATEDIF(A1, B1, "D"), 365), 30), 30)&" day(s)",
IF(DATEDIF(A1, B1, "D")>30, QUOTIENT(DATEDIF(A1, B1, "D"), 30)&" month(s) "&
MOD(DATEDIF(A1, B1, "D"), 30)&" day(s)",
DATEDIF(A1, B1, "D")&" day(s)"))
=IF( DATEDIF(A2, B2, "D")> 365,
SPLIT(QUOTIENT(DATEDIF(A2, B2, "D"), 365)&" "&
QUOTIENT(MOD(DATEDIF(A2, B2, "D"), 365), 30)&" "&
MOD(QUOTIENT(MOD(DATEDIF(A2, B2, "D"), 365), 30), 30), " "),
IF( DATEDIF(A2, B2, "D")> 30,
{"", SPLIT(QUOTIENT(DATEDIF(A2, B2, "D"), 30)&" "&
MOD(DATEDIF(A2, B2, "D"), 30), " ")},
{"", "", DATEDIF(A2, B2, "D")}))
Я буду интерпретировать ваш вопрос как требующий ответа в полных годах, полных календарных месяцах и любых оставшихся днях. Это должно быть довольно просто, за исключением случаев, когда месяц, содержащий дату начала, имеет больше дней, чем месяц, предшествующий месяцу, содержащему дату окончания *.
Пример:
Start Date End Date Result
28/1/19 1/3/19 1 month and 1 day
29/1/19 1/3/19 1 month and 1 day
30/1/19 1/3/19 1 month and 1 day
31/1/19 1/3/19 1 month and 1 day
Если вы примете это, то следующие формулы должны работать:
Год
=datedif(A1,B1,"Y")
Месяц
=mod(datedif(A1,B1,"m"),12)
[ 1119] День
=IF(DAY(B1)>=DAY(A1),DAY(B1)-DAY(A1),DAY(EOMONTH(B1,-1))+DAY(B1)-MIN(DAY(A1),DAY(EOMONTH(B1,-1))))
РЕДАКТИРОВАТЬ
* Проверено это на [118 ] этот веб-сайт и обнаружил, что он делает то же самое предположение - вы получаете такую же продолжительность (1 месяц и один день) с 28/1/19 по 1/3/19, как с 31/1/19 по 1/3 / 19, хотя общее количество дней (32 или 29) отличается.
Возможный обходной путь - взять дни, оставшиеся в начальном месяце
=IF(DAY(B1)>=DAY(A1),DAY(B1)-DAY(A1),DAY(EOMONTH(A1,0))-DAY(A1)+DAY(B1))
, что, кажется, согласуется с этим веб-сайтом
Вы также можете использовать аргумент MD Datedif:
=datedif(A1,B1,"MD")
Но как в Google Sheets, так и в Excel это может привести к отрицательному числу, как указано в документации Excel :
The "MD" argument may result in a negative number, a zero, or an inaccurate result. If you are trying to calculate the remaining days after the last completed month...