Excel日期函数大全:DATEDIF算工龄/年龄/间隔天数,一篇搞定

算工龄数月份、算年龄算不对生日、算项目天数总出错?这篇讲透Excel日期函数,重点精讲DATEDIF隐藏神器,零基础也能上手。

开头:那些年我们踩过的日期坑

你有没有遇到过这些情况:

中了以上任何一条,说明你需要系统学日期函数。特别是DATEDIF这个隐藏函数------不在函数列表里显示,却是计算工龄、年龄、间隔天数的第一神器。

本文从基础到进阶,把日期函数一次性讲透。照着公式抄,零经验也能用。

一、日期函数基础:先搞定这6个打底

讲DATEDIF之前,先搞定6个基础日期函数。它们就像积木,后面拼复杂公式全都要用。

1. TODAY函数 ------ 获取今天的日期

公式:

=TODAY()

作用:返回当前系统日期,打开文件自动更新。

示例:今天是2024/3/15,输入 =TODAY() 就会显示 2024/3/15。

注意:括号里不用填内容;每次打开自动更新为当天日期;需要固定日期直接手动输入。

2. NOW函数 ------ 获取当前日期和时间

公式:

=NOW()

作用:返回当前日期+时间,如2024/3/15 14:30:25。算天数用TODAY即可,NOW适合精确到小时的场景。

3. YEAR / MONTH / DAY ------ 提取年月日

这三个是一组,用法完全相同:

示例:=YEAR(\"2024/3/15\") 返回2024。A2是出生日期的话,=YEAR(A2) 得到出生年份。

4. DATE函数 ------ 拼接日期

公式:

=DATE(年, 月, 日)

作用:把分开的年月日数字拼成完整日期。

示例:=DATE(2024, 3, 15) 返回2024/3/15。

实用场景:年月日拆在不同列时用DATE拼回。如A列年、B列月、C列日,公式为 =DATE(A2,B2,C2)。

{width="5.0in" height="3.3333333333333335in"}

二、DATEDIF函数精讲:日期计算的隐藏神器

什么是DATEDIF?为什么叫隐藏函数?

DATEDIF非常特殊------不在公式插入函数列表里,输入时也没有提示,必须完整敲出来才能用。

但功能极强:专门计算两个日期相差的年、月、天数。算工龄、年龄、工期全靠它。

DATEDIF语法

公式:

=DATEDIF(开始日期, 结束日期, 单位代码)

三个参数:

  1. 开始日期:较早的那个日期

  2. 结束日期:较晚的那个日期

  3. 单位代码:你想要什么单位的结果(年/月/日等,用英文双引号包起来)

💡 参数要点:开始日期和结束日期顺序不能反,否则报错;单位代码必须用英文双引号包裹。

6个单位代码详解(重点!)

DATEDIF的精髓全在第三个参数------单位代码,一共有6个:

💡 记忆口诀:Y年M月D日是基础,MD只算日差不管年月,YM只算月差不管年日,YD算日差但只看一年。


单位代码 含义 返回范围 \"Y\" 相差的整年数,不足一年舍去 整数年 \"M\" 相差的整月数,不足一月舍去 整数月 \"D\" 相差的总天数 总天数 \"MD\" 日的差值,忽略年和月 0-30 \"YM\" 月的差值,忽略年和日 0-11 \"YD\" 日的差值,只忽略年 0-364


统一举例:入职日期2020/6/1,今天2024/3/15。

\"Y\" ------ 算整年差

=DATEDIF(\"2020/6/1\", \"2024/3/15\", \"Y\") → 返回 3

还没到2024年6月1日,不满第4年,所以只算3整年。

典型应用:计算周岁年龄、工作年限、服务年限等需要满年才算的场景。

\"M\" ------ 算整月差

=DATEDIF(\"2020/6/1\", \"2024/3/15\", \"M\") → 返回 45

3年36个月加9个月共45个月,还没到3月底所以不加第46个月。

典型应用:计算月数工资、按月统计项目时长、分期还款期数等。

\"D\" ------ 算总天数

=DATEDIF(\"2020/6/1\", \"2024/3/15\", \"D\") → 两个日期之间总天数

直接用结束日期减开始日期也能得到同样结果,但DATEDIF写法更规范。

\"MD\" ------ 日差(忽略年月)

=DATEDIF(\"2020/6/1\", \"2024/3/15\", \"MD\") → 返回 14

只看日:15-1=14天。常和Y、M组合,显示X年X个月零X天。

\"YM\" ------ 月差(忽略年日)

=DATEDIF(\"2020/6/1\", \"2024/3/15\", \"YM\") → 返回 9

只算月份差:从6月到次年3月差9个月。这是最常用的参数,算去掉整年后还剩几个月全靠它。

搭配Y参数使用,就能显示X年X个月的完整工龄格式,是HR最常用的组合。

\"YD\" ------ 日差(忽略年)

=DATEDIF(\"2020/6/1\", \"2024/3/15\", \"YD\") → 返回 287

忽略年份,只看一年内日期差,从6月1日到次年3月15日共287天。适合算距离下一个生日还有多少天。

DATEDIF常见坑 ⚠️

1. 开始日期 > 结束日期会报#NUM!错误

DATEDIF要求第一个参数≤第二个。不确定谁早谁晚,用MIN/MAX包一下:

=DATEDIF(MIN(A2,B2), MAX(A2,B2), \"Y\")

💡 总结:遇到日期函数报错,按这三步排查------先看是不是真日期,再看日期顺序对不对,最后检查公式拼写。

2. 日期格式不对 → #VALUE!错误

\"2024.3.15\"或\"2024年3月15日\"识别不了,必须用标准日期格式如2024/3/15。

3. 文本型日期用不了

日期左上角有绿色小三角说明是文本不是真日期。解决方法:选中→数据→分列→直接点完成。

💡 快速验证:输入=A1+1,如果报错说明是文本日期,如果能算出下一天就是真日期。

{width="5.0in" height="3.3333333333333335in"}

三、实战场景:4个高频应用,拿来就能用

讲完理论上干货------4个高频职场场景,公式直接抄。

场景1:计算员工工龄(X年X个月)

需求:根据入职日期,算到今天工龄是几年零几个月。

公式(入职日期在B列):

=DATEDIF(B2,TODAY(),\"Y\")&\"年\"&DATEDIF(B2,TODAY(),\"YM\")&\"个月\"

公式拆解:

示例结果:3年9个月

新手提示:引号必须是英文双引号;TODAY后面有括号;显示#NAME?大概率是DATEDIF拼错了。

💡 进阶写法:如果入职日期为空想显示空白,可以加个IF判断:=IF(B2=\"\",\"\",DATEDIF(...)&\"年\"&...)

场景2:计算周岁年龄

需求:根据出生日期,算到今天的周岁年龄(生日过了才算长一岁)。

公式(出生日期在C列):

=DATEDIF(C2,TODAY(),\"Y\")

就这么简单,一个\"Y\"参数搞定。

为什么不用今年减出生年?那样会多算一岁。比如今天3月15日,生日6月1日,2024-1990=34但实际还没满34岁。DATEDIF的\"Y\"会自动判断生日过没过,非常精准。

💡 扩展:想精确到几岁几个月?用和工龄一样的公式,把入职日期换为出生日期即可。

场景3:计算项目剩余天数

需求:项目有截止日期,算距离今天还剩多少天,快到期的标红提醒。

基础公式(截止日期在D列):

=D2-TODAY()

日期格式直接相减得到天数。

友好版公式(区分逾期和未到期):

=IF(D2\<TODAY(),\"已逾期\"&(TODAY()-D2)&\"天\",\"还剩\"&(D2-TODAY())&\"天\")

效果:没到期显示还剩15天,过期显示已逾期3天。

配合条件格式标红:

选中剩余天数列→开始→办公效率工具→突出显示单元格规则→小于→输入7→选浅红填充色深红色文本→确定。剩余7天内自动标红。

场景4:合同到期自动提醒

需求:合同到期30天以内,自动显示即将到期,方便提前续签。

公式(到期日期在E列):

=IF(E2-TODAY()\<=0,\"已到期\",IF(E2-TODAY()\<=30,\"即将到期(\"&(E2-TODAY())&\"天)\",\"正常\"))

公式拆解:

适合行政、法务、采购等需要管理大量合同的岗位。

{width="5.0in" height="3.3333333333333335in"}

四、其他实用日期函数:进阶必备

除了基础函数和DATEDIF,还有4个进阶日期函数也很好用,建议收藏。

1. EDATE ------ 推N个月后的日期

公式:

=EDATE(开始日期, 月数)

作用:算出某个日期往前或往后推几个月的日期。

示例:=EDATE(\"2024/3/15\", 3) → 2024/6/15(3个月后)

月数填负数就是往前推。常见用途:合同到期日(签约日+12个月)、试用期到期日(入职+3个月)。

💡 提示:EDATE自动处理大小月,比如1月31日加1个月会得到2月28日(或29日),非常智能。

2. EOMONTH ------ 月末日期

公式:

=EOMONTH(开始日期, 月数)

作用:返回指定月数后那个月的最后一天。

示例:=EOMONTH(\"2024/3/15\", 0) → 2024/3/31(本月最后一天)

做月报需要月末日期,用这个一键获取,不用记哪个月30天哪个月31天。

3. WORKDAY ------ 工作日推算

公式:

=WORKDAY(开始日期, 工作日天数, [节假日])

作用:往后推N个工作日(自动跳过周末)的日期。

示例:=WORKDAY(\"2024/3/15\", 5) → 2024/3/22(跳过两个周末)

常见用途:项目排期、物流到货预估、审批时限计算。

4. NETWORKDAYS ------ 计算工作日天数

公式:

=NETWORKDAYS(开始日期, 结束日期, [节假日])

作用:两个日期之间的工作日天数(自动排除周六周日)。

示例:=NETWORKDAYS(\"2024/3/1\", \"2024/3/31\") → 21(3月共21个工作日)

常见用途:实际出勤天数、项目实际工期。

五、日期函数常见5大坑,千万别踩

日期函数看起来简单,但坑特别多。新手90%的报错都来自下面这5个坑。

坑1:看起来是日期,其实是文本

最常见的坑。单元格显示2024/3/15但实际是文本,函数一算就报错。

判断方法:格式改为常规,变数字是真日期,不变是文本。

转换方法:选中→数据→分列→点完成,一秒转正。

坑2:两位年份容易理解错

输入24/3/15,Excel 效率工具可能理解为2024年也可能是1924年,取决于系统设置。

安全做法:永远用4位年份,如2024/3/15,别偷懒。

坑3:跨年度手动算不对

有些人算日期差直接年减年月减月,不够减就懵了。比如2024/3/15减2023/10/20,月3-10不够减......

正确做法:直接用DATEDIF,自动处理借位,不用操心。

坑4:中文日期格式算不了

二〇二四年三月十五日这种中文日期,Excel识别不了。

解决方法:查找替换把年月换成/,把日删掉,变成标准日期。

坑5:DATEDIF返回#NUM!错误

99%是开始日期大于结束日期。不确定谁早谁晚,用MIN/MAX包一下:

=DATEDIF(MIN(A2,B2),MAX(A2,B2),\"Y\")

结尾总结

本文从6个基础日期函数讲起,重点精讲DATEDIF的6个单位代码,实战4个高频场景,补充4个进阶函数和5个避坑点。

核心要点回顾:

日期函数是Excel实用性最强的函数之一,HR、行政、财务、项目经理几乎天天用。建议收藏本文,用的时候翻一翻,照着公式抄,很快就能熟练掌握。

作者:沈未迟
来源说明:本文首发于微信公众号「效率小本本」,经整理优化后发布于 DevToolHub。

沈未迟 · 独立开发者
DevToolHub 站长,专注于在线工具开发与效率提升。联系邮箱:[email protected]