如果您使用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 [经过的天数,即年,月和日]。