在excel里算工龄,最省心的办法就是用datedif函数:先用 "y" 算出满打满算的整年数,再用 "ym" 算扣掉整年之后剩下的月份;要是还想显示剩余天数,再加个 "md" 参数就行。只要员工表有「入职日期」和「截止日期」两列,一条公式就能直接算出「几年几个月几天」格式的工龄。
普通日常用的Excel就能完成这个操作。你可以把入职日期放在B列,截止日期放在C列,也可以直接用 TODAY() 调取当天日期当截止日。写公式之前先确认两列的内容是标准日期格式,别直接把“2020.01.01”当普通文本输进去,不然要么报错要么算不出正确结果。
第一步:整理入职日期和截止日期
先在表格里准备两列日期,一列填每个员工的入职时间,另一列填你打算把工龄算到哪一天。HR日常用得最多的就是「入职日期」+「当前日期」的组合;要是想让工龄每天自动更新,完全不用单独建截止日期列,后面写公式的时候直接把结束日期设成 TODAY() 就好。

这里有个小细节要留意:结束日期必须大于等于开始日期。要是入职日期填的是2021年,截止日期反而选了2020年,DATEDIF函数会直接返回 #NUM!,这不是公式写错了,是日期逻辑本身就不成立。
第二步:用 DATEDIF 先算完整年份
在要放工龄结果的第一行单元格里输入基础公式 =DATEDIF(B2,C2,"Y"),意思是从B2的入职日期到C2的截止日期,中间一共经过了多少个完整的自然年。"Y" 只会统计满了的整年,不足一年的部分不会四舍五入。

DATEDIF的通用写法是 =DATEDIF(开始日期,结束日期,"单位")。参数写 "Y" 算间隔整年,写 "M" 算间隔整月,写 "D" 算间隔天数。做工龄场景最常用的就是 "Y"、"YM" 和 "MD" 这三个参数。
第三步:补出剩余月份
要是只写带 "Y" 的公式,结果只会显示整数年,看不出来入职之后还多了几个月。要补上剩余月份,接着用 =DATEDIF(B2,C2,"YM") 就行。这里的 "YM" 代表先把前面的整年数全部扣除,只统计剩下的不满一年的月份数。

举个很直观的例子,员工2018年1月入职,截止到2020年5月,整年部分是2年,剩下的零散月份就是4个月。用 "M" 得到的会是总月数,只有用 "YM" 才能拼出我们要的“几年几个月”格式。
第四步:拼接成年月日工龄
需要显示完整的「几年几个月几天」工龄,直接在结果单元格输入下面这条组合公式:
=DATEDIF(B2,C2,"Y")&"年"&DATEDIF(B2,C2,"YM")&"个月"&DATEDIF(B2,C2,"MD")&"天"
这条公式把整年数、剩余月数、剩余天数用连接符串起来,最后出来的结果就是类似“1年4个月13天”的文本。要是不想单独留C列放截止日期,直接把公式里的C2换成 TODAY() 就行,比如 =DATEDIF(B2,TODAY(),"Y")&"年"&DATEDIF(B2,TODAY(),"YM")&"个月"&DATEDIF(B2,TODAY(),"MD")&"天"。

第五步:向下填充并检查异常值
第一行的公式确认算出来的结果没问题之后,拖动单元格右下角的填充柄往下复制,整张员工表的工龄就能批量算完。全部复制完之后重点检查三类异常情况:日期是空值、开始日期比结束日期晚、日期被识别成文本。空白日期会导致结果乱跳,文本格式的日期得先用“分列”功能或者 DATEVALUE 转成标准日期格式才能正常计算。
要是你只需要统计“满了几年”,公式里保留 "Y" 参数就够用了;如果是做人事档案、跟进试用期或者核算年假,建议用“年+月+天”的完整写法,结果一目了然,后续要筛选工龄快到整数年的员工也方便。











