夜雨聆风学习资料网

ARTICLE · 1155287

Excel日期函数DATEDIF计算年龄、工龄怎么用

Excel日期函数DATEDIF计算年龄、工龄怎么用

DATEDIF 是 Excel 里专门用来计算两个日期之间间隔的函数,算年龄和工龄最省事:只要一个出生日期、一个今天,写 =DATEDIF(A2,TODAY(),"Y") 就能得到周岁。它属于隐藏函数,输入时没有参数提示,但语法记牢就很好用。

一、DATEDIF 的语法

=DATEDIF(开始日期, 结束日期, 返回单位)

  • 开始日期必须小于等于结束日期,否则会返回 #NUM! 错误。
  • 结束日期写成 TODAY(),年龄和工龄每天都会自动更新。

第三个参数「返回单位」是重点,常用取值如下:

单位
含义
"Y"
两个日期之间的整年数
"M"
整月数
"D"
总天数
"YM"
忽略年份后的剩余月数
"YD"
忽略年份后的剩余天数
"MD"
忽略年月后的剩余天数

二、算年龄:精确到周岁

假设 A2 是出生日期 1990/05/20,在 B2 输入:

=DATEDIF(A2,TODAY(),"Y")

结果就是周岁,比 =YEAR(TODAY())-YEAR(A2) 准确得多——后者遇到今年生日还没过的人会多算一岁。

想显示成「35岁3个月」,把两段结果拼起来:

=DATEDIF(A2,TODAY(),"Y")&"岁"&DATEDIF(A2,TODAY(),"YM")&"个月"

注意连接符 & 后面的中文要用英文双引号包起来,写成 &"岁" 才不会报错。

三、算工龄:入职日期到今天

假设 B2 是入职日期,按整年算工龄:

=DATEDIF(B2,TODAY(),"Y")

想精确到月,用整月数除以 12:

=DATEDIF(B2,TODAY(),"M")/12

把单元格格式设为「数字」并保留 2 位小数,就能看到 3.42 年这样的结果。想按「满几年几个月」展示:

=DATEDIF(B2,TODAY(),"Y")&"年"&DATEDIF(B2,TODAY(),"YM")&"个月"

再进一步,还可以顺带算司龄补贴:=DATEDIF(B2,TODAY(),"Y")*100,满一年加 100 元。

四、三种算法的对比

方案
优点
缺点
适用场景
DATEDIF
准确到周岁,写法短
没有参数提示,日期顺序反了会报错
年龄、工龄
YEAR 相减
容易理解,一眼看懂
今年生日未过会多算一岁
粗略统计
YEARFRAC
直接得到小数年数
需要自己设置小数位数
司龄、项目时长

假设 A2 是入职日期,折算年数写 =YEARFRAC(A2,TODAY()),返回 3.42 这样的数值。

再提醒一点:DATEDIF 的三个参数都可以引用单元格。把「统计截止日期」单独放在 F1,写成 =DATEDIF(A2,$F$1,"Y"),就能随时改成月末或年末口径重新计算,比直接写 TODAY() 更灵活,做年度报表时特别顺手。

五、常见问题

公式算出 #NUM!?先检查开始日期是不是晚于结束日期,再看单元格里是不是文本格式的日期。文本日期可以用 DATEVALUE 转换,或者用「数据-分列」直接刷成日期格式。

结果显示成一串数字?把单元格格式改回「常规」或「数字」。DATEDIF 返回的是数值,不是日期,被套上日期格式就会显示成序号。

WPS 表格支持吗?支持。DATEDIF 在 WPS 表格里的写法和单位取值与 Excel 一致,TODAY() 同样会自动刷新。

小结:算年龄、工龄优先用 DATEDIF 配 TODAY(),"Y" 取整年、"YM" 取剩余月;拼接字符串时别忘记 & 和英文双引号,报错先查日期顺序和格式。

相关学习资料