Excel用DATEDIF算两个日期差几个月零几天
- 2026-11-05 02:39:46
Excel用DATEDIF算两个日期差几个月零几天
做考勤、算账期、统计项目工期,经常要的不是“差多少天”,而是“差了几个月零几天”。比如入职日期2023/3/15到今天,直接减出来是个天数,老板想听的是“3年6个月11天”。Excel里有个老函数专门干这事:DATEDIF。它藏得深,不在函数列表里,但特别好用。
函数长什么样
DATEDIF 的写法固定是三个参数:
=DATEDIF(开始日期, 结束日期, 单位代码)
单位代码决定它返回什么:用 "Y" 算差了多少整年,"YM" 算去掉整年后剩几个月,"MD" 算去掉整月后剩几天。三个拼起来,就是“几年几个月零几天”。
算“几个月零几天”的两段公式
假设开始日期在 A2,结束日期在 B2。
先算整月差:
=DATEDIF(A2,B2,"m")
这个公式直接给你两个日期之间差了多少个完整月,不考虑零头天数。比如差14个月,它就回 14。
再算多出来的几天:
=DATEDIF(A2,B2,"md")
"md" 的意思是忽略年、忽略月,只算同月内差几天。把它和前面的 "m" 一组合,14个月零9天就出来了。
常见坑:"md" 在跨月月底偶尔会算错(这是Excel的老bug),结束日期是月底时尤其明显。稳妥做法是把结束日期写成 EOMONTH(B2,0) 之外的实日期,或直接用 B2-A2 的天数减去 DATEDIF 的整月天数来交叉核对。
一组公式拼出完整话术
想要“X年Y个月Z天”这种展示,用 & 把三段连起来:
=DATEDIF(A2,B2,"y")&"年"&DATEDIF(A2,B2,"ym")&"个月"&DATEDIF(A2,B2,"md")&"天"
这里 "ym" 是去掉整年后剩下的月,和前面的 "y" 配合,正好避开 "m" 把年也吞进去的问题。
一句话记住:"Y" 整年、"YM" 余月、"MD" 余天,三个单位代码组合,日期差怎么拆都行。下次算工期别再手动数日历了。