用DATEDIF函数精确计算工龄:=DATEDIF(B2,TODAY(),"y")&"年"&DATEDIF(B2,TODAY(),"ym")&"个月",其中"ym"参数确保剩余月份不进位;可加IFERROR容错或替换TODAY()为固定日期锁定结果。

要在Excel中根据员工入职日期精确计算出“X年Y个月”格式的工龄,必须避免简单用年份相减或天数除以365这类粗略算法,否则2026年5月29日当天刚满3年零11个月的员工会被错误显示为3年或4年——关键在于准确剥离完整年份后,单独计算剩余月份而不进位。
用DATEDIF组合公式输出“X年Y个月”
这一步直接生成可读性强、人事场景通用的文本结果,无需额外格式设置。
在目标单元格(如C2)中输入公式:=DATEDIF(B2,TODAY(),"y")&"年"&DATEDIF(B2,TODAY(),"ym")&"个月",其中B2是入职日期所在单元格。
按Enter确认,例如B2为2023/7/15,则返回“2年10个月”——【“ym”参数确保只算剩余月份,不会把12个月自动进成1年】。
选中C2单元格,将鼠标移至右下角填充柄处双击,自动向下填充至所有员工行。
处理入职日期为空或非法的情况
当原始数据存在空白、文本型“2023-01-01”或未来日期时,上述公式会报错#VALUE!或#NUM!,导致整列中断。
方法一:用IFERROR包裹容错
在目标单元格输入:=IFERROR(DATEDIF(B2,TODAY(),"y")&"年"&DATEDIF(B2,TODAY(),"ym")&"个月","未入职")。
方法二:先判断是否为有效日期再计算
输入:=IF(ISDATE(B2),DATEDIF(B2,TODAY(),"y")&"年"&DATEDIF(B2,TODAY(),"ym")&"个月","日期无效")。
注意:ISDATE函数在Excel 365及2021版以上可用;若版本较旧,改用IF(ISNUMBER(B2*1),...)
锁定截止日期,避免工龄随打开时间变动
适用于做年度审计报表、离职结算或历史快照场景,防止不同人在不同日期打开文件看到不同工龄值。
第一步:确定截止日,比如统一按2026/12/31计算
第二步:将TODAY()替换为DATE(2026,12,31)
第三步:完整公式为:=DATEDIF(B2,DATE(2026,12,31),"y")&"年"&DATEDIF(B2,DATE(2026,12,31),"ym")&"个月"
这个公式里不再依赖系统时间,哪怕你在2027年打开,结果也恒定为截至2026年底的工龄。


















