必会的16个Excel日期函数
- 2026-11-10 07:03:06
帮朋友看一张对账表。日期那一列排得整整齐齐,SUMIFS求和却一直返回 0。
我点开一个单元格:31 行日期,31 个绿色小三角,全是左对齐的文本。
他不是不会 Excel。他只是不知道,日期在 Excel 里压根不是日期。
一课搞定 Excel,从入门到精通|145节实战课,帮你少加班
日期不是日期,是数字穿了件衣服。
01
CHAPTER 01
先记住:日期是数字
在任意单元格输入 2026/11/8,再把格式改成「常规」,你会看到 46334。
从 1900 年 1 月 1 日算起的第 46334 天。所以日期加 1 是明天,减 1 是昨天,两个日期相减就是相差天数。
反过来,如果日期是文本,怎么加都出不来结果。修复只要两个减号:
| =--A2 | ||
| =--A2 |
-- 是两次取负,把文本硬掰成数字。粗暴,但管用。
TODAY|今天几号
作用·返回当前日期,打开文件自动更新
参数·没有参数,但括号必须写
| =TODAY() | ||
| =A2-TODAY() |
22 是还剩 22 天,直接能拿去做倒计时。
⚠️ TODAY 和 NOW 都会随重算变化。做完表记得 复制 → 选择性粘贴 → 值,不然明天打开,今天的日期全变成明天。
NOW|现在几点
作用·返回日期加时间,精确到分钟
参数·没有参数
| =NOW() | ||
| =TEXT(NOW(),"hh:mm") |
02
CHAPTER 02
拆:年、月、日、星期
YEAR / MONTH / DAY|三兄弟
作用·分别抠出年、月、日
参数·=YEAR(日期),只有一个参数,别找第二个
| =YEAR(A2) | ||
| =MONTH(A2) | ||
| =DAY(A2) |
按月汇总时不用加辅助列,直接 =SUMPRODUCT((MONTH(A2:A100)=11)*B2:B100)。
WEEKDAY|今天星期几
作用·返回 1 到 7 的数字,判断周末用
参数·=WEEKDAY(日期,[返回类型]),默认 1 是周日,写 2 就是周一=1
| =WEEKDAY(A2) | ||
| =WEEKDAY(A2,2) | ||
| =WEEKDAY(A2,2)>5 |
第二参数写 2 的习惯建议养成。「周一=1」符合人类直觉,「周日=1」只符合美国习惯。
WEEKNUM|这是第几周
作用·返回日期在当年的周序号,做周报常用
参数·=WEEKNUM(日期,[返回类型]),默认周日为起点,写 2 是周一
| =WEEKNUM(A2) | ||
| =WEEKNUM(A2,2) | ||
| =ISOWEEKNUM(A2) |
同一天,一个 46 一个 45。不是 Excel 抽风,是你没告诉它一周从哪天开始。周报对不齐,八成栽在这。
03
CHAPTER 03
装:拼回去、转过来、化个妆
DATE|三个数字拼成一个日期
作用·用年、月、日拼出合法日期,越界自动进位
参数·=DATE(年,月,日),三个都要填
| =DATE(A2,B2,1) | ||
| =DATE(2026,1,0) | ||
| =DATE(2026,2,29) |
第三条很有用。2026 年不是闰年,写 2 月 29 日它不报错,直接给你 3 月 1 日。想要当月天数,=DAY(DATE(2026,12,0)) 就够。
DATEVALUE|文本转日期
作用·把长得像日期的文本,转成真日期
参数·=DATEVALUE(文本),只吃文本,喂数字会报 #VALUE!
| =DATEVALUE(A2) | ||
| =--A2 |
两个减号少敲六个字母。DATEVALUE 的好处是,别人一眼看得懂你在干嘛。
TEXT|把日期打扮成你要的样子
作用·按指定格式输出文本,拼接、导出、打印都靠它
参数·=TEXT(值,"格式代码"),格式代码要加英文双引号
| =TEXT(A2,"yyyy年m月d日") | ||
| =TEXT(A2,"aaaa") | ||
| =TEXT(A2,"yyyy-mm") | ||
| =TEXT(A2,"m月d日")&" "&TEXT(A2,"aaa") |
⚠️ 老坑:mm 是月份,不是分钟。分钟用 [m],算工时要用 [h]:mm,才能把 25 小时显示成 25:00 而不是 1:00。
04
CHAPTER 04
加减:别再手数 30 天
EDATE|加 N 个月
作用·在日期上加或减 N 个月,月末自动收口
参数·=EDATE(起始日期,月数),负数往前推
| =EDATE(A2,1) | ||
| =EDATE(A2,13) | ||
| =EDATE(A2,-1) |
1 月 31 日加一个月,它没给你 3 月 3 日,而是老老实实落到 2 月 28 日。这才是人类要的「一个月后」。
EOMONTH|这个月最后一天
作用·返回指定月份的最后一天
参数·=EOMONTH(起始日期,月偏移),0 本月,1 下月,-1 上月
| =EOMONTH(A2,0) | ||
| =EOMONTH(A2,-1)+1 | ||
| =EOMONTH(A2,1) |
「本月第一天」没有专门函数。用「上个月最后一天加 1」,一秒到手。
加号和减号|省事的算法
作用·按天加减,根本不用函数
参数·没有。1 就代表一天
| =A2+7 | ||
| =A2-1 | ||
| =A2+1/24 |
+1/24 是加一小时,+1/1440 是加一分钟。因为 1 代表一整天,时间就是小数。
05
CHAPTER 05
算差:工龄、账龄、倒计时
DATEDIF|藏得很深的函数
作用·算两个日期相差几年、几月、几天
参数·=DATEDIF(开始,结束,"单位"),顺序反了直接 #NUM!
单位·y 整年 m 整月 d 天数 ym 零头月 md 零头天
| =DATEDIF(A2,B2,"y") | ||
| =DATEDIF(A2,B2,"ym") | ||
| =DATEDIF(A2,B2,"md") | ||
| =DATEDIF(A2,B2,"m") |
拼起来就是人话:=DATEDIF(A2,B2,"y")&"年"&DATEDIF(A2,B2,"ym")&"个月",结果 36年5个月。
注意:敲 =DATE 它不会蹦出来。不是版本坏了,是这个函数从 2007 年起就被藏起来了,但一直能用。
DAYS|相差几天
作用·返回两个日期之间的天数
参数·=DAYS(结束,开始),和 DATEDIF 顺序相反
| =DAYS(A2,B2) | ||
| =A2-B2 | ||
| =DAYS(B2,A2) |
能直接相减就别绕函数。DAYS 的意义是让别人不猜谁先谁后,可它的顺序偏偏容易搞反。
差一天不是手滑,是参数顺序写反了。
06
CHAPTER 06
工作日:请假、排期、交期
NETWORKDAYS|中间有几个工作日
作用·数两个日期之间的工作日,自动扣周末,可扣节假日
参数·=NETWORKDAYS(开始,结束,[节假日区域])
| =NETWORKDAYS(A2,B2) | ||
| =NETWORKDAYS(A2,B2,C2:C3) | ||
| =NETWORKDAYS(A2,B2) |
第三参数不用手写。把节假日清单单独列一列,选区域就行,每年更新那一列,全年都能用。
WORKDAY|过 N 个工作日是哪天
作用·从某天起往后推 N 个工作日,返回那天的日期
参数·=WORKDAY(起始,天数,[节假日区域]),负数往前推
| =WORKDAY(A2,1) | ||
| =WORKDAY(A2,3) | ||
| =WORKDAY(A2,-3) | ||
| =WORKDAY(A2,1,C9) |
07
CHAPTER 07
三个坑,和一张速查表
坑一|格式改了,值没改
把文本日期选中,右键设置格式为日期,看着像日期了,求和还是 0。
格式只改长相,不改本质。解药还是那两个减号。
坑二|DATEDIF 反着写
=DATEDIF(结束,开始,"d") 不返回负数,直接给你 #NUM!。它是唯一一个顺序错了就骂人的日期函数。
✦ ✦ ✦
日期函数一共二十来个,常用的就这十六个。
真正让人加班到十点的,从来不是函数太难,而是「差一天」没人发现。
公式不用背,看两遍结果,手就有记忆。
你被哪个日期函数坑过?评论区报个函数名,票数高的我单独拆一篇。
学 好 E x c e l · 告 别 无 效 加 班
还在为报表加班、被数据难题困住?
与其碎片化刷短视频自学,不如系统学好 Excel,掌握能落地的职场数据技能。
👉 点击文末【阅读原文】、报名学习。
学好 Excel,提升效率,告别无效加班!
觉得有用的话,点个赞和在看,我们下期见。