经过的天数(年,月和日)(Microsoft Excel)
如果您使用Excel跟踪有关项目的信息,则可能需要了解给定项目的持续时间,以年,月和日为单位。如果您有每个项目的开始日期和结束日期,则可以使用DATEDIF工作表函数以所需的方式返回信息。
例如,假设您在单元格E7中有一个开始日期,在单元格F7中有一个结束日期。您可以使用DATEDIF的这种非常简单的用法来计算两个日期之间的差:
=DATEDIF(E7,F7,"d")
如果E7中的日期小于或等于F7中的日期,则此函数返回两个日期之间的天数。第三个参数“ d”使DATEDIF以天为单位返回其结果。您还可以指定月份(“ m”)和年份(’y“)。但是,出于本示例的目的,还有其他一些参数特别有用:月份不包括年份(” ym“),天不包括年份(
=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")
(由于本技巧中公式的长度,我将它们分成几行以使其更易于阅读。但是,这是一个公式,应输入为
=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"))
语法上正确并在需要时提供单数形式,以下公式将解决问题:
=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"))
||在所有情况下都为ks,除非年,月或日为零。要消除为零的适当单位,则需要更长的公式:
该公式变得很长,但是它将仅返回有值的单位。因此,与其返回“ 0年2个月1天”,不如返回“ 2个月1天”。
甚至这也不是一个完美的公式,因为在某些情况下(如果不需要),它将仍然显示条目之间的逗号。以下宏公式应修复复数和逗号,并消除零项。
_ExcelTips_是您进行经济高效的Microsoft Excel培训的来源。
本技巧(2184)适用于Microsoft Excel 97、2000、2002和2003。可以在以下功能区中为Excel的功能区界面(Excel 2007及更高版本)找到本技巧的版本:
链接:/ excelribbon-Elapsed_Days_as_Years_Months_and_Days [经过的天数,即年,月和日]。