分享

DATEDIF函数

 ExcelEasy 2022-04-29

分类:日期和时间函数

DATEDIF是用来计算两个日期之间相差的精确数字,可以根据要求返回年数,月数或天数。

DATEDIF有三个参数:

开始日期

结束日期

计算单位

其中,计算单位用于指示返回的值是年,月还是天。

下表是计算单位的设定:

单位返回结果
"Y"一段时期内的整年数
"M"一段时期内的整月数
"D"一段时期内的天数
"MD"开始日期与结束日期之间之间去掉整数月之后的天数之差
"YM"开始日期与结束日期之间去掉整数年之后的整数月份之差
"YD"开始日期与结束日期之间去掉整数年之后的天数之差

下面是使用各种单位的公式示例:

下图用图示的方式展示了上图中的各种返回结果:

DATEDIF返回年和月时结果都是整数,不足1年或者1月的天数会被忽略掉。

但是我们可以结合采用不同单位的DATEDIF公式返回精确结果,比如,下面的例子中我们返回了两个日期之间的精确天数:

=DATEDIF(B3,C3,"Y")&"年"&DATEDIF(B3,C3,"YM")&"月"&DATEDIF(B3,C3,"MD")&"天"

返回结果:

1年3月7天

注:跟其他日期函数不同,DATEDIF函数必须把较小的日期放在第一个参数,如果写错了,会返回错误。

问题

在某些情况下,DATEDIF函数的“MD”会返回错误的结果,有时是负数,有时是0,有时是正数但是不是期望的结果。比如下面的情况:

造成这种情况的原因是Excel在计算时对实际月份的天数考虑不周造成的。

对于第3行数据来说,Excel首先计算两个日期之间差几个整月,结果是2,

然后就将开始日期进行如下计算:

=DATE(YEAR(B3),MONTH(B3)+2,DAY(B3))

结果是"2021/14/31",Excel会在计算时自动变成“2022/3/3”,然后用2022/3/1减去2022/3/3,结果就是-2。

所以,在使用MD作为单位时要小心。更稳妥的方法是使用替代公式进行计算:

=B3-DATE(YEAR(B3),MONTH(B3),1)

注:DATEDIF的本来目的是与Lotus 1-2-3兼容。它本身在Excel中是一个隐藏函数。上面的这种计算错误问题微软早已了解,但是并没有修改。说明微软并不太建议大家使用这个函数。

Excel+Power Query+Power Pivot+Power BI


Power Excel 知识库    按照以下方式进入知识库学习
Excel函数   底部菜单:知识库->Excel函数

自定义函数  底部菜单:知识库->自定义函数

Excel如何做  底部菜单:知识库->Excel如何做

面授培训  底部菜单:培训学习->面授培训

也可以在历史文章中学习Excel,Power Query,Power Pivot,Power BI,Power Automate各种技巧。

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多