Если вы используете Excel для отслеживания информации о проектах, вы можете узнать продолжительность данного проекта в годах, месяцах и днях. Если у вас есть дата начала и дата окончания для каждого проекта, вы можете использовать функцию листа РАЗНДАТ, чтобы вернуть информацию нужным образом.

Например, предположим, что у вас есть дата начала в ячейке E7 и дата окончания в ячейке F7. Вы можете рассчитать разницу между двумя датами с помощью этого очень простого использования DATEDIF:

=DATEDIF(E7,F7,"d")

Эта функция возвращает количество дней между двумя датами при условии, что дата в E7 меньше или равна дате в F7. Третий аргумент, «d», заставляет DATEDIF возвращать результат в днях. Вы также можете указать месяцы («m») и годы (‘y «). Однако для целей этого примера есть несколько других аргументов, которые особенно полезны: месяцы без учета лет (» ym «), дни без учета лет ( «ярд») и дни, исключая месяцы и годы («мд»).

Используя эти разные аргументы, вы можете составить формулу, которая вернет ответ, указывающий прошедшие дни как годы, месяцы и дни.

(Из-за длины формул в этом совете я разбил их на отдельные строки, чтобы их было немного легче читать. Однако это единственная формула, и ее следует вводить как в Excel.)

=DATEDIF(E7,F7,"y") & " years, " & DATEDIF(E7,F7,"ym")

& " months, " & DATEDIF(E7,F7,"md") & " days "

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

=IF(DATEDIF(E7,F7,"y")=1,DATEDIF(E7,F7,"y")&" year, ", DATEDIF(E7,F7,"y")&" years, ")&IF(DATEDIF(E7,F7,"ym")=1, DATEDIF(E7,F7,"ym") &" month, ",DATEDIF(E7,F7,"ym")

&" months, ")&IF(DATEDIF(E7,F7,"md")=1,DATEDIF(E7,F7,"md")

&" day",DATEDIF(E7,F7,"md")&" days")

This wor ks во всех случаях, кроме тех случаев, когда годы, месяцы или дни равны нулю. Чтобы избавиться от правильной единицы, когда она равна нулю, требуется еще более длинная формула:

=IF(DATEDIF(E7,F7,"y")=0,"",IF(DATEDIF(E7,F7,"y")=1, DATEDIF(E7,F7,"y")&" year, ",DATEDIF(E7,F7,"y")&" years, "))

&IF(DATEDIF(E7,F7,"ym")=0,"",IF(DATEDIF(E7,F7,"ym")=1, DATEDIF(E7,F7,"ym")&" month, ",DATEDIF(E7,F7,"ym")&" months, "))

&IF(DATEDIF(E7,F7,"md")=0,"",IF(DATEDIF(E7,F7,"md")=0, DATEDIF(E7,F7,"md")&" day ",DATEDIF(E7,F7,"md")&" days"))

Эта формула становится довольно длинной, но она вернет только те единицы, для которых есть значение. Таким образом, вместо того, чтобы возвращать «0 лет, 2 месяца, 1 день», он вернет «2 месяца, 1 день».

Даже это не идеальная формула, так как она все равно будет отображать запятые между записями в некоторых ситуациях, когда они не требуются. Следующая мегаформула должна исправить множественное число и запятые и избавиться от нулевых записей.

=IF(DATEDIF(E7,F7,"y")=0,"",IF(DATEDIF(E7,F7,"y")=1, DATEDIF(E7,F7,"y")&"year",DATEDIF(E7,F7,"y")&"years"))

&IF(AND(DATEDIF(E7,F7,"y")<>0,DATEDIF(E7,F7,"ym")<>0),", ","")

&IF(DATEDIF(E7,F7,"ym")=0,"",IF(DATEDIF(E7,F7,"ym")=1, DATEDIF(E7,F7,"ym")&" month",DATEDIF(E7,F7,"ym")&" months"))

&IF(AND(OR(DATEDIF(E7,F7,"y")<>0,DATEDIF(E7,F7,"ym")<>0), DATEDIF(E7,F7,"md")<>0),", ","")&IF(DATEDIF(E7,F7,"md")=0,"", IF(DATEDIF(E7,F7,"md")=1,DATEDIF(E7,F7,"md")&" day", DATEDIF(E7,F7,"md")&" days"))

ExcelTips — ваш источник экономичного обучения Microsoft Excel.

Этот совет (2184) относится к Microsoft Excel 97, 2000, 2002 и 2003. Вы можете найти версию этого совета для ленточного интерфейса Excel (Excel 2007 и новее) здесь:

link: / excelribbon-Elapsed_Days_as_Years_Months_and_Days [Прошедшие дни как годы, месяцы и дни].