Прошедшие дни как годы, месяцы и дни (Microsoft Excel)
Если вы используете 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 [Прошедшие дни как годы, месяцы и дни]
.