ARTICLE · 1243344
Excel小技巧:五个日期函数,让表格里的时间信息自动更新
你的人事表里有一列入职日期,旁边需要显示"工龄"。你手动算了一下:张三 2020 年 3 月入职,到今天 6 年 7 个月。填上去了。
问题是,"今天"是今天。下个月再看这张表,张三的工龄应该是 6 年 8 个月,但你填的还是 6 年 7 个月。因为你填的是一个固定的数字,它不会自己变化。
类似的场景还有很多:
合同到期日减 30 天,标记"即将到期" 员工生日算出年龄 项目开始日期到今天,算已过天数 两个日期之间有多少个工作日
这些场景有一个共同特点:它们都涉及"当前日期",而当前日期每天都在变。如果你每次都手动更新,迟早会漏。
今天教你五个日期函数,让表格里的时间相关信息全部自动更新。设一次,永远不用手动改。
函数一:TODAY() — 永远显示今天
最简单的一个函数。在任何单元格里输入:
=TODAY()这个单元格就会永远显示今天的日期。今天是 2026 年 10 月 24 日,它就显示 2026-10-24。明天打开,自动变成 2026-10-25。
不需要任何参数,括号里什么都不写。
它的价值在于做"动态基准"。比如你想知道"距离合同到期还有多少天":
=D2-TODAY()D2 是合同到期日,减去今天,结果就是剩余天数。正数表示还没到期,负数表示已经过期。
注意:TODAY() 是"易失性函数"。意思是每次你打开文件、做任何编辑操作,它都会重新计算。所以你每次打开表,看到的都是最新的日期。这是它的优点,也是唯一需要注意的地方——如果表特别大、公式特别多,大量易失性函数可能让表格变慢。
函数二:NOW() — 永远显示此刻
和 TODAY() 几乎一样,但它精确到时间。
=NOW()显示的是当前日期加当前时间,比如"2026-10-24 19:17"。
如果你只需要日期不需要时间,用 TODAY() 就好。NOW() 适合需要精确到小时分钟的场景,比如记录"最后更新时间"、计算"距离截止时间还有几小时"等。
NOW() 也是易失性函数,每次操作都会刷新。
函数三:DATEDIF — 算工龄、年龄、间隔的神器
这是今天最重要的一个函数,也是 Excel 里最"神秘"的一个函数——你在 Excel 的函数列表里找不到它,在帮助文档里也搜不到它。它真实存在,而且极其好用。
DATEDIF 的全称是 Date Difference(日期差值),它的作用是计算两个日期之间的间隔,并且可以按年、按月、按日来显示。
语法:
=DATEDIF(开始日期, 结束日期, "单位")第三个参数"单位"决定返回什么:
实战:算工龄
假设 A2 是入职日期,你想显示"X年Y个月":
=DATEDIF(A2,TODAY(),"Y")&"年"&DATEDIF(A2,TODAY(),"YM")&"个月"如果 A2 是 2020-03-15,结果就是"6年7个月"。明天打开,自动变成正确的值。不需要手动更新。
实战:算年龄
假设 B2 是出生日期:
=DATEDIF(B2,TODAY(),"Y")返回完整年龄。
实战:合同到期倒计时
假设 C2 是到期日期,想看"还剩X年X月":
=IF(C2>TODAY(), DATEDIF(TODAY(),C2,"Y")&"年"&DATEDIF(TODAY(),C2,"YM")&"月后到期", "已过期")用 IF 判断一下是否已经过了到期日,没过的话正向计算剩余时间,过了就显示"已过期"。
函数四:NETWORKDAYS — 算工作日
TODAY() 和 DATEDIF 算的都是自然日。但很多业务场景需要的是工作日——去掉周末和法定节假日。
比如:“这个项目从 9 月 1 日开始到今天,实际工作了多少天?”
=NETWORKDAYS("2026-9-1", TODAY())这个函数会自动排除周六和周日,只计算周一到周五的天数。
如果你还需要排除特定的法定节假日(比如国庆节 7 天),可以把假期日期放在一个区域里(比如 Z1:Z7),写成:
=NETWORKDAYS("2026-9-1", TODAY(), Z1:Z7)第三个参数是可选的"假期列表"。Excel 会把周末加上这些日期一起排除。
反向用法: 如果你想知道"从今天开始,30 个工作日之后是哪天"(比如算交货日期),用 WORKDAY 函数:
=WORKDAY(TODAY(), 30, Z1:Z7)它会跳过周末和假期,返回准确的交货日期。
函数五:EOMONTH — 算月末日期
这个函数用来算"某个月最后一天"的日期。
语法:
=EOMONTH(开始日期, 月偏移量)比如:
=EOMONTH(TODAY(), 0)返回本月最后一天的日期。今天是 10 月 24 日,结果是 2026-10-31。
=EOMONTH(TODAY(), 1)返回下个月最后一天,即 2026-11-30。
=EOMONTH(TODAY(), -1)返回上个月最后一天,即 2026-09-30。
实战场景:
算本月还剩几天:=EOMONTH(TODAY(),0)-TODAY() 算应收账款账期(每月月底结算):=EOMONTH(开票日期, 2),表示开票后第2个月月底到期 生成年末日期:=EOMONTH(“2026-1-1”, 11),返回 2026-12-31
五个函数的配合实战
场景一:员工信息看板
所有信息自动更新,不需要每月初手动改一遍。
场景二:项目进度追踪
场景三:财务账期管理
几个容易踩的坑
第一,DATEDIF 的参数顺序不能反。 第一个参数是开始日期(较早的),第二个是结束日期(较晚的)。如果开始日期晚于结束日期,函数会返回 #NUM! 错误。如果你不确定哪个日期更早,可以套一个 IF 判断,或者用 ABS 取绝对值(但 ABS 只对 “D” 单位有效,对 “Y” 和 “M” 不行)。
第二,DATEDIF 没有函数提示。 因为它是"隐藏函数",输入时 Excel 不会弹出参数提示。你需要自己记住语法:=DATEDIF(日期1, 日期2, “单位”)。
第三,TODAY() 和 NOW() 每次打开都会刷新。 如果你需要记录一个"固定时间戳"(比如"这条数据是什么时候录入的"),不要用 TODAY(),用 Ctrl+;(插入当前日期)或 Ctrl+Shift+;(插入当前时间)。这两个快捷键插入的是静态值,不会自动更新。
第四,NETWORKDAYS 的假期列表需要手动维护。 Excel 不会自动知道中国的法定节假日是哪天。你需要每年在表格的某个区域列出当年的假期日期,作为第三个参数引用。建议在一个单独的 Sheet 里维护一张"年度假期表",所有公式统一引用它。
第五,日期计算的结果要改格式。 TODAY()-某个日期,结果是一个数字(天数差)。如果你不小心给这个单元格设了日期格式,它会显示成一个奇怪的日期。确保计算结果的单元格格式是"常规"或"数值",而不是"日期"。
今天的总结
五个日期函数速记:
这五个函数覆盖了日常工作中 90% 的日期计算需求。学会之后,你的表格里再也不会出现"上次手动填的日期已经过了三个月"这种尴尬。















































































