HR 发来一张员工表,A 列是入职日期,让我在旁边加一列显示工龄,要求每天早上打开自动更新。用今天减入职日期就行,可不少人相减出来是一串日期,不是数字,盯着屏幕怀疑公式写错了。

相减之前先确认是日期

选中入职日期列,把单元格格式改成常规。变成四万多的数字,说明是真日期;还是 2023-05-06 这种原样,那就是文本。用数据选项卡里的分列,一路下一步,末步选日期,能把它转成真正的时间值。文本和日期相减,会得到错误值或者一串怪数字。

三个够用的公式

算总天数,直接用 TODAY() 减入职单元格,结果格式设成常规。算整年,用 DATEDIF,第三个参数写 Y 表示满几年,写 M 是整月,写 D 是天数。想拼成几年几个月,把两个 DATEDIF 的结果用连接符串起来,中间加文字说明。

只算工作日,用 NETWORKDAYS,从入职日到今天,自动跳过周末。要扣法定节假日,第三个参数选一张节假日表,放假调休都填进去。这个函数默认把起止两天都算在内,入职当天算不算,按公司口径决定要不要减一。

把结果做得能直接用

算出天数先别急着交,把列宽和数值格式调顺,天数右对齐,年份写成两位整数。整张表用 Excel 表格对象包起来,加行时公式自动续上,不用手动往下拖。要看某个部门,就按部门列插入切片器,点一下筛一批。

还可以加一层提醒:选中工龄列,条件格式里用公式判断入职未满 30 天,整行标黄,试用期名单一眼能看出来。表头冻结、日期列锁定,交给别人维护时少问几句。

几个容易踩的坑

TODAY 是易失函数,任何一次编辑都会重算,几万行的表会明显卡顿。只算到某个固定日期的话,换成常量单元格。按天算出来的年资,在周年那天才会跳,和按年取整的口径可能差一天,报给财务前对一遍。跨年那几天,两种口径会同时存在,元旦前后各跑一次核对。

表格发给别人,对方打开时公式按他那天的日期重算,要留档就复制一份粘贴成值。工龄牵扯年假和补偿,把入职当天算不算、按月还是按天进位写进表格说明,比公式本身更要紧。