1
场景背景
HR 要统计每个人的工龄,用于年假、调薪。工龄不是简单相减,要按「整年 + 零头月」表示。DATEDIF 是隐藏函数,专门干这个:单位 Y 取整年、YM 取忽略年之后的月数、D 取总天数。
2
数据结构
共 1 个 Sheet3
解决步骤
1
第 1 步:算整年工龄
DATEDIF(入职日, TODAY(), "Y"),注意单位要加英文双引号。
=DATEDIF(D2,TODAY(),"Y")
2
第 2 步:算零头月
单位换成 YM,只取去掉整年后的月数,0~11。
=DATEDIF(D2,TODAY(),"YM")
3
第 3 步:拼成「7年7个月」
用 & 把数字和文字拼起来,中间加个「年」「个月」。
=DATEDIF(D2,TODAY(),"Y")&"年"&DATEDIF(D2,TODAY(),"YM")&"个月"
4
第 4 步:算入职总天数
单位写 D 就是总天数,可用于计算年假折算。
=DATEDIF(D2,TODAY(),"D")
4
完整公式与逐段拆解
=DATEDIF(D2,TODAY(),"Y")&"年"&DATEDIF(D2,TODAY(),"YM")&"个月"
DATEDIF(D2,TODAY(),"Y")整年数,如 7&"年"&拼上「年」字DATEDIF(D2,TODAY(),"YM")零头月数,如 7&"个月"拼上「个月」| A | B | C | D | E | F | G | |
|---|---|---|---|---|---|---|---|
| 1 | 工号 | 姓名 | 部门 | 入职日期 | 月薪 | 工龄(年) | 零头月 |
| 2 | E01 | 张三 | 销售部 | 2019-03-15 | 8000 | 7 | 7 |
| 3 | E02 | 李四 | 技术部 | 2021-07-01 | 9500 | 5 | 3 |
| 4 | E03 | 王五 | 销售部 | 2022-01-10 | 7600 | 4 | 9 |
| 5 | E04 | 赵六 | 市场部 | 2023-09-20 | 6800 | 3 | 1 |
| 6 | E05 | 孙七 | 销售部 | 2020-05-08 | 8200 | 6 | 5 |
| 7 | E06 | 周八 | 技术部 | 2024-02-19 | 9000 | 2 | 8 |
| 8 | E07 | 吴九 | 市场部 | 2018-11-05 | 7200 | 7 | 11 |
| 9 | E08 | 郑十 | 技术部 | 2022-08-30 | 8800 | 4 | 2 |
| 10 |
当前表:员工信息 · 公式单元格 F2 · 绿色底为公式,蓝色底为动态数组溢出结果
员工信息 F、G 列算出工龄年数和零头月数
6
数据流向
数据流向演示1 / 4
来源员工信息!D2
➜
去向DATEDIF
入职日期
来源TODAY()
→
去向DATEDIF
与今天比较
来源DATEDIF
→
去向F2 / G2
取整年 / 零头月
来源F2,G2
→
去向「7年7个月」
拼成可读文案
跟着高亮一步步看数据怎么流动
7
注意事项与坑
!DATEDIF 是隐藏函数,输入时没有参数提示,别以为打错了。
!开始日期晚于结束日期会返回 #NUM!。
!入职日期是文本时先转成真日期,否则 #VALUE!。
8