EXCEL 日期函数 特殊场景应用之一我们平时在销售、行政、财务和车间管理的数据汇总统计中,经常会用到各式各样的日期函数,有的还需要年月日、周等相互转换。
本期重点把日期函数的分类和特殊应用,通过示例汇总综合展示,许多时候日期函数需要搭配其他函数使用,效果更好。
Excel 中常用的日期函数主要分为获取日期/时间、构造日期/时间、计算日期差和推算日期四大类,具体如下:
一、 获取日期/时间类
TODAY():获取系统当前的日期(无参数,隔天自动更新)。NOW():获取系统当前的日期和时间(精确到秒,无参数)。MONTH(日期):提取日期中的月份(1-12)。MINUTE(时间):提取时间中的分钟(0-59)。SECOND(时间):提取时间中的秒数(0-59)。WEEKDAY(日期, [返回类型]):获取日期对应的星期几(返回数字,如1-7)。WEEKNUM(日期, [返回类型]):获取日期在一年中的周数。二、 构造日期/时间类
将分离的年、月、日组合成标准的日期序列号(自动修正月份/天数的溢出值)。将文本格式的日期(如“2023/1/1”)转换为标准的日期序列号。三、 计算日期差类
DATEDIF(开始日期, 结束日期, "单位")计算两个日期的间隔(“y”为整年数,“m”为整月数,“d”为整天数,“ym”为忽略年的月数,“md”为忽略年月的天数,“yd”为忽略年的天数)。DAYS360(开始日期, 结束日期, [方法])按每年360天(每月30天)的会计日历计算两个日期之间的天数差,常用于财务计息。NETWORKDAYS(开始日期, 结束日期, [节假日])NETWORKDAYS.INTL(开始日期, 结束日期, [周末参数], [节假日])计算两个日期之间的完整工作日天数,可自定义周末天数。四、 推算日期类
在指定日期基础上,向前或向后推算指定的月数(月数正为往后,负为往前)。获取指定日期前后某月份的最后一天(月数0为当月,正为往后,负为往前)。WORKDAY(开始日期, 工作日天数, [节假日])从指定日期开始,向前或向后推算指定工作日天数后的日期(自动跳过周末和指定节假日)。●生成2026年每月第一天的日期(DATE+SEQUENCE)=DATE(C1,SEQUENCE(1,12),1)用SEQUENCE函数生成1行12列的数组,再结合DATE函数生成12个月的日期数组。=SEQUENCE(行数, [列数], [起始值], [增量])日期=LET(X,TODAY()-WEEKDAY(TODAY(),2)+ROW(1:8),CHOOSEROWS(X,C1))旬=LOOKUP(DAY(C3),{0,11,21},{"上旬","中旬","下旬"})求"日期"应用了 LET+TODAY+WEEKDAY+ROW+CHOOSEROWS 组合函数;LET 函数是为了减少函数公式的长度,提高识别度,也方便修改。●统一日期格式。(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 函数组合。TRUNC函数(Truncate的缩写)主要用于截断数字或截取日期,其核心机制是直接截去指定位置后的数字,不进行四舍五入,且向0方向取整。TRUNC直接截去小数部分,正负数处理一致(向0取整),例如TRUNC(-3.14)返回-3。INT为向下取整,对正数截去小数,对负数向更小的整数取整,例如INT(-3.14)返回-4。●生成两个日期之间的日期。(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参数在跨月或跨年时可能存在计算误差(如开始日期的日大于结束日期的日时,结果可能为负数或异常值),若对天数精度要求极高,建议直接使用 (结束日期 - 开始日期)计算天数。●生成本月倒计时的日期。(EOMONTH+TODAY)=EOMONTH(TODAY(),0)-TODAY()EOMONTH是 Excel、WPS 及 Power BI 中常用的日期函数,用于返回指定日期之前或之后某个月份的最后一天。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!错误。