其实Excel里藏着一个“宝藏函数”——DATEDIF,专门解决「两个日期之间的差值计算」,功能强大到离谱,但因为是隐藏函数,在函数向导里根本找不到,只有老司机才知道它的用法。
今天就把这个“私藏技巧”一次性讲透,从基础语法到实战案例,再到避坑指南,看完直接上手,职场效率翻倍!
DATEDIF 是 Excel 中用于计算「两个日期之间相隔的天数、月数或年数」的隐藏函数,之所以被隐藏,是因为它最初是为了兼容旧版 Lotus 1-2-3 工作簿而设计的,但功能却一点不落后,甚至比常规日期函数更灵活、更精准。
核心优势:无需复杂嵌套,直接输入公式,就能快速返回你需要的时间差值,适配年龄、工龄、项目周期、活动时长等多种场景,新手也能轻松驾驭。
重点提醒:它是“隐藏函数”,不是“废弃函数”!在Excel/WPS中可以直接输入使用,只是不会出现在函数列表里,放心用~
DATEDIF函数的语法非常简单,只有3个参数,记住这个公式,就能应对90%的场景:
=DATEDIF(起始日期, 结束日期, 单位代码)
逐个拆解参数,一看就懂:
起始日期:计算的开始日期,比如出生日期、入职日期、项目启动日期(必须是1900年之后的有效日期,可直接输入日期、引用单元格,或用DATE函数生成);
结束日期:计算的截止日期,比如当前日期、项目结束日期(必须晚于起始日期,否则会返回#NUM!错误);
单位代码:最关键的参数,指定返回的时间单位,区分大小写,常用的6个代码如下(建议收藏):
单位代码 | 返回结果 | 通俗说明 |
|---|---|---|
Y | 两个日期之间的整年数 | 比如计算年龄(已满多少周岁)、工龄(已满多少年) |
M | 两个日期之间的整月数 | 比如计算入职后满多少个月,项目持续多少整月 |
D | 两个日期之间的总天数 | 比如计算活动持续天数、两个日期的间隔总天数 |
YD | 忽略年份,仅计算两个日期的天数差 | 比如每年生日当天,计算距离去年生日过了多少天 |
YM | 忽略年份,仅计算两个日期的整月数 | 比如忽略年份,计算两个日期相差多少个月 |
MD | 忽略年份和月份,仅计算两个日期的天数差 | 比如计算同一个月内,两个日期相差多少天(注意:此参数有已知限制,可能返回不准确结果) |
光懂语法不够,结合实际场景套用,才能真正学会。以下5个场景,覆盖职场和日常,公式直接复制就能用(假设起始日期在A1,结束日期在B1)。
需求:根据出生日期(A1),计算当前的周岁年龄(自动同步当前日期,无需手动更新)。
公式:=DATEDIF(A1, TODAY(), "Y")
说明:TODAY()函数会自动获取系统当前日期,搭配“Y”参数,直接返回已满的周岁数,比如A1是1995-08-15,当前日期是2026-03-21,结果就是30。
进阶:想显示“X岁X个月X天”,公式可以嵌套为:=DATEDIF(A1,TODAY(),"Y")&"岁"&DATEDIF(A1,TODAY(),"YM")&"个月"&DATEDIF(A1,TODAY(),"MD")&"天"
需求:根据入职日期(A1),计算员工到当前日期的工龄(可按年、按月、按天统计)。
按年统计(已满多少年):=DATEDIF(A1, TODAY(), "Y")
按月统计(已满多少个月):=DATEDIF(A1, TODAY(), "M")
按天统计(总入职天数):=DATEDIF(A1, TODAY(), "D")
延伸:在审计、人员核查场景中,还可以用这个函数计算服务对象年龄,快速筛选不符合条件的人员,大幅减少人工核对工作量。
需求:项目启动日期(A1)为2026-01-01,结束日期(B1)为2026-06-30,计算项目持续的天数和整月数。
持续总天数:=DATEDIF(A1, B1, "D")(结果为180天)
持续整月数:=DATEDIF(A1, B1, "M")(结果为5个月)
需求:活动开始日期(A1)为2026-03-20,结束日期(B1)为2026-04-10,计算当前距离活动结束还有多少天。
公式:=DATEDIF(TODAY(), B1, "D")
说明:如果当前日期在活动结束后,公式会返回#NUM!错误,可搭配IF函数规避:=IF(TODAY()<=B1,DATEDIF(TODAY(),B1,"D"),"活动已结束")
需求1:忽略年份,计算两个日期的天数差(比如每年的纪念日,计算距离今年纪念日还有多少天)。
公式:=DATEDIF(A1, B1, "YD")(例:A1=2025-05-20,B1=2026-05-15,结果为360天)
需求2:忽略年份,计算两个日期的整月数(比如忽略年份,计算两个日期相差多少个月)。
公式:=DATEDIF(A1, B1, "YM")(例:A1=2025-01-15,B1=2026-06-10,结果为5个月)
很多人用DATEDIF出错,不是函数不好用,而是没注意这4个细节,记好就能避免99%的错误:
参数顺序不能反:必须是「起始日期在前,结束日期在后」,如果搞反,会返回#NUM!错误(比如用结束日期-起始日期,就会出错);
单位代码区分大小写:必须用英文双引号括起来,且只能用大写(比如“Y”不能写成“y”,否则会返回#VALUE!错误);
日期格式要正确:起始日期和结束日期必须是Excel认可的日期格式(比如“2026-03-21”“2026/03/21”),如果是文本格式,需先转换为日期格式;
“MD”参数慎用:这个参数存在已知限制,在某些场景下可能返回负数值或不准确结果,如需计算同月内天数差,可尝试用其他方法替代(比如直接用结束日期的日减去起始日期的日)。
DATEDIF,隐藏但实用,核心公式=DATEDIF(起始日期, 结束日期, 单位代码),6个单位代码对应不同需求,搞定年龄、工龄、日期差,省去手动换算的麻烦。
其实Excel里还有很多这样的“隐藏宝藏”,不用死记硬背,掌握一个,解决一类问题,就是最高效的学习方式。
今天的DATEDIF用法,建议收藏起来,下次遇到日期计算,直接翻出来套用,省时又省力~
最后,留个小作业:如果A1是你的出生日期,用今天讲的公式,计算一下自己的精准年龄吧?评论区留下你的结果~
✨ 关注我,解锁更多Excel干货,让职场效率翻倍!