先说明一点:这个函数在Excel里属于“隐藏函数”。你敲等号然后输入DATEDIF,Excel不会自动弹出提示框,参数列表也不会出来。但它真实存在,所有版本都能用,只是微软没把它放进函数向导里。所以记住拼写和参数顺序很重要。
语法是这样的:=DATEDIF(开始日期, 结束日期, 单位)
第三个参数是一个字符串,用英文双引号括起来,告诉函数你要算单位是什么。
常见的单位有这么几个:
"Y":返回两个日期之间的整年数。只算年份差。比如从2020年5月20日到2026年5月20日,正好6年,返回6;如果到2026年5月19日,还差一天到6年,返回5。

"M":返回整月数。算的是满了多少个月。比如从2026年3月20日到2026年5月20日,正好2个月,返回2;如果到2026年5月19日,还差一天到2个月,返回1。

"D":返回整天数。这个跟直接减法的结果一样。

"YD":忽略年份,只算同一年内两个日期之间的天数差。
这个单位适合算“不考虑年份,光看某天到某天还有多少天”,比如算生日还有多久。

"YM":忽略年份,只算同一年内两个日期之间的整月数。

"MD":忽略年份和月份,只算天数差。如果开始日期的“日”<=结束日期的“日”,则返回结束日期的“日”-开始日期的“日”。如果开始日期的“日”>结束日期的“日”,则返回30-开始日期的“日”+结束日期的“日”。
如开始日期2020/3/20,结束日期2026/5/19.那么30-20+19,结果返回29

实际工作中,DATEDIF最常用的场景是算年龄和工龄。比如员工身份证上的出生日期在C2,今天可以用TODAY(),
那么年龄就是=DATEDIF(C2,TODAY(),"Y")。注意这样算的是“实岁”,不是虚岁。如果直接用年份相减,没到生日那天的也会多算一岁,用DATEDIF就不会有这个问题。
算工龄也一样,入职日期在D2,当前日期在E2(或者用TODAY()),整年数用Y,如果想显示“X年Y个月”,可以这样写:
=DATEDIF(D2,E2,"Y")&"年"&DATEDIF(D2,E2,"YM")&"个月"这样显示出来就是“6年2个月”,比较符合中国人习惯。
还有一个场景:算某个项目已经进行了多少天、多少个月、多少年,用DATEDIF配合不同的单位,放在仪表盘里很好看。
需要注意几个坑:
第一,结束日期必须大于开始日期。否则返回#NUM错误值。
第二,第三个参数必须是英文双引号括起来的字符串,大小写不敏感,"y"和"Y"一样。但绝对不能写中文引号。
第三,DATEDIF在计算"MD"单位时,微软官方文档里提到过一些极端情况可能会有误差。如果要求特别精确的天数,建议直接用减法。
第四,这个函数在跨世纪的时候(比如1900年之前)不支持,但一般业务数据用不到那么早。
总结一下:DATEDIF是一个隐藏但非常有用的日期差计算函数。用它算整年、整月非常干净,不用自己处理闰年、大小月这些烦人的细节。记住三个参数:开始日期、结束日期、单位字符串。