乐于分享
好东西不私藏

EXCEL 日期函数 特殊场景应用之一

EXCEL 日期函数 特殊场景应用之一

我们平时在销售、行政、财务和车间管理的数据汇总统计中,经常会用到各式各样的日期函数,有的还需要年月日、周等相互转换。

本期重点把日期函数的分类和特殊应用,通过示例汇总综合展示,许多时候日期函数需要搭配其他函数使用,效果更好。

Excel 中常用的日期函数主要分为获取日期/时间构造日期/时间计算日期差推算日期四大类,具体如下:

一、 获取日期/时间类

TODAY():获取系统当前的日期(无参数,隔天自动更新)。
NOW():获取系统当前的日期和时间(精确到秒,无参数)。
YEAR(日期):提取日期中的年份。
MONTH(日期):提取日期中的月份(1-12)。
DAY(日期):提取日期中的天数(1-31)。
HOUR(时间):提取时间中的小时(0-23)。
MINUTE(时间):提取时间中的分钟(0-59)。
SECOND(时间):提取时间中的秒数(0-59)。
WEEKDAY(日期, [返回类型]):获取日期对应的星期几(返回数字,如1-7)。
WEEKNUM(日期, [返回类型]):获取日期在一年中的周数。

二、 构造日期/时间类

DATE(年, 月, 日)
将分离的年、月、日组合成标准的日期序列号(自动修正月份/天数的溢出值)。
TIME(时, 分, 秒)
将分离的时、分、秒组合成标准的时间序列号。
DATEVALUE(日期文本)
将文本格式的日期(如“2023/1/1”)转换为标准的日期序列号。
TIMEVALUE(时间文本)
将文本格式的时间转换为标准的时间序列号。

三、 计算日期差类

DATEDIF(开始日期, 结束日期, "单位")
计算两个日期的间隔(“y”为整年数,“m”为整月数,“d”为整天数,“ym”为忽略年的月数,“md”为忽略年月的天数,“yd”为忽略年的天数)。
DAYS(结束日期, 开始日期)
计算两个日期之间的天数差。
DAYS360(开始日期, 结束日期, [方法])
按每年360天(每月30天)的会计日历计算两个日期之间的天数差,常用于财务计息。
NETWORKDAYS(开始日期, 结束日期, [节假日])
计算两个日期之间(排除周末)的完整工作日天数。
NETWORKDAYS.INTL(开始日期, 结束日期, [周末参数], [节假日])
计算两个日期之间的完整工作日天数,可自定义周末天数。

四、 推算日期类

EDATE(开始日期, 月数)
在指定日期基础上,向前或向后推算指定的月数(月数正为往后,负为往前)。
EOMONTH(开始日期, 月数)
获取指定日期前后某月份的最后一天(月数0为当月,正为往后,负为往前)。
WORKDAY(开始日期, 工作日天数, [节假日])
从指定日期开始,向前或向后推算指定工作日天数后的日期(自动跳过周末和指定节假日)。
示例1:
生成2026年每月第一天的日期(DATE+SEQUENCE
=DATE(C1,SEQUENCE(1,12),1)
说明:
用SEQUENCE函数生成1行12列的数组,再结合DATE函数生成12个月的日期数组。
函数语法
=SEQUENCE(行数, [列数], [起始值], [增量])
示例2:
生成2026年本周几对应的日期、季度和旬。
日期=LET(X,TODAY()-WEEKDAY(TODAY(),2)+ROW(1:8),CHOOSEROWS(X,C1))
季度=LEN(2^MONTH(C3))
旬=LOOKUP(DAY(C3),{0,11,21},{"上旬","中旬","下旬"})
说明:
求"日期"应用了 LET+TODAY+WEEKDAY+ROW+CHOOSEROWS 组合函数;
求"季度"应用了 LEN+MONTH 函数;
求"旬"应用了 LOOKUP+DAY 函数。
LET 函数是为了减少函数公式的长度,提高识别度,也方便修改。
示例3:
统一日期格式。(LET+IF+ISERROR+FIND+LEN+TEXT+SUBSTITUTE
=LET(X,B2,IF(ISERROR(FIND(".",X)),IF(LEN(X*1)=6,(TEXT(X,"00-00"))*1,IF(LEN(X*1)=8,(TEXT(X,"0-00-00"))*1,X*1)),SUBSTITUTE(X,".","-")*1))
说明:
统计数据时,日期填写的格式混乱,有的带有"/"、".",或者是8位数字,为方便后期引用查询日期数据,需要统一为规范的日期格式。这里应用了LET+IF+ISERROR+FIND+LEN+TEXT+SUBSTITUTE 函数组合。
示例4:
去掉日期的时间部分,只保留日期。(TRUNC
=TRUNC($B2,0)
说明:
TRUNC函数(Truncate的缩写)主要用于截断数字截取日期,其核心机制是直接截去指定位置后的数字,不进行四舍五入,且向0方向取整
TRUNC与INT函数的区别:
TRUNC直接截去小数部分,正负数处理一致(向0取整),例如TRUNC(-3.14)返回-3。
INT为向下取整,对正数截去小数,对负数向更小的整数取整,例如INT(-3.14)返回-4。
示例5:
生成两个日期之间的日期。(LET+DATEDIF+DATE+SEQUENCE
=LET(X,DATEDIF(DATE(C2,D2,E2),DATE(C4,D4,E4),"D"),SEQUENCE(,X+1,DATE(C2,D2,E2),1))
说明:
SEQUENCE 函数可以生成日期差值+1的列数,起始值选择开始日期
语法:=SEQUENCE(行数, [列数], [起始值], [增量])
DATEDIF 是 Excel 和 WPS 中的隐藏函数,用于计算两个日期之间的差值(年、月、日等)。该函数没有函数向导提示,必须手动输入完整公式。
语法:=DATEDIF(开始日期,结束日期,计算类型)
参数详解
"Y":计算两个日期之间的完整年数(忽略月份和天数,常用于计算周岁或工龄)。
"M":计算两个日期之间的完整月数(忽略天数和年份,即满多少个月)。
"D":计算两个日期之间的完整天数(等同于结束日期 - 开始日期)。
"YM":忽略年份,计算两个日期之间的完整月数(仅比较月份,常用于计算“满X年后还剩多少个月”)。
"YD":忽略年份,计算两个日期之间的天数(仅比较月份和天数,常用于计算“同一年内两个日期相差多少天”)。
"MD":忽略年份和月份,计算两个日期之间的天数(仅比较天数,常用于计算“满X个月或X年后还剩多少天”)。
常见应用场景与公式示例
计算周岁/实岁:=DATEDIF(出生日期, TODAY(), "Y")(使用TODAY()获取当前日期,精确计算满多少周岁,避免直接用年份相减导致的误差)。
计算工龄(年+月):=DATEDIF(入职日期, TODAY(), "Y") & "年" & DATEDIF(入职日期, TODAY(), "YM") & "个月"。
计算两个日期相差天数:=DATEDIF(开始日期, 结束日期, "D")。
计算同一年内两个日期的月份差:=DATEDIF(开始日期, 结束日期, "YM")。
注意事项
日期格式:开始日期和结束日期必须是 Excel 可识别的日期格式,或为能返回日期的单元格引用。
参数引号:unit 参数必须使用英文双引号(如"Y"),使用中文引号会报错(#NAME?)。
MD 参数限制:MD参数在跨月或跨年时可能存在计算误差(如开始日期的日大于结束日期的日时,结果可能为负数或异常值),若对天数精度要求极高,建议直接使用 (结束日期 - 开始日期)计算天数。
示例6:
生成本月倒计时的日期。(EOMONTH+TODAY
=EOMONTH(TODAY(),0)-TODAY()
说明:
EOMONTH是 Excel、WPS 及 Power BI 中常用的日期函数,用于返回指定日期之前或之后某个月份的最后一天
函数语法
=EOMONTH(date, months)
date(开始日期):必需。指定的起始日期,可以是单元格引用、DATE函数生成的日期,或 Excel 认可的日期格式(建议避免使用文本格式,以免解析出错)。
months(月份数):必需。指定向前或向后推移的月份数。
正数(如 1、3):表示向后推移(未来)几个月,返回对应月份的最后一天。
负数(如 -1、-3):表示向前推移(过去)几个月,返回对应月份的最后一天。
0:表示当前月份,返回 start_date 所在月份的最后一天。
核心特性
自动适配月份天数:函数会自动识别大小月及平闰年,始终返回目标月份的实际最后一天(例如:2月会自动返回28日或29日,4月自动返回30日)。
跨年计算:函数会自动处理跨年情况,例如从2025年12月向后推1个月,会自动返回2026年1月的最后一天。
参数取整规则:如果months为小数,函数会截尾取整(例如 1.9 取整为 1,-2.5 取整为 -2)。
常见应用示例
获取当月最后一天:=EOMONTH(A2, 0)(假设 A2 为日期,返回 A2 所在月的最后一天,如 2025/6/15 返回 2025/6/30)。
获取下个月最后一天:=EOMONTH(A2, 1)(返回下个月的最后一天,如 2025/6/15 返回 2025/7/31)。
获取上个月最后一天:=EOMONTH(A2, -1)(返回上个月的最后一天,如 2025/6/15 返回 2025/5/31)。
计算合同/账单到期日:若合同开始日期为 A2,期限为 n 个月,到期日公式:=EOMONTH(A2, n)。
计算当月天数:结合DAY函数,公式:=DAY(EOMONTH(A2, 0))(提取当月最后一天的天数,即当月总天数)。
注意事项
日期格式:确保date为 Excel 可识别的日期,否则会返回#VALUE!错误。
日期范围:若date加months后的结果超出 Excel 的日期范围(1900年1月1日以后),会返回#NUM!错误。
欢迎点赞、收藏与转发。
下期继续。。。。。。