ARTICLE · 1303345
Excel 日期与时间函数:算年龄、算间隔、算工作日
Excel 日期与时间函数:算年龄、算间隔、算工作日
入职到今天多少年、两个日期隔了几天、扣掉周末和法定假日还剩几个工作日——日期一旦涉及计算就特别容易错,难的不是函数本身,是 Excel 里日期其实是一串数字这件事。
取当下:TODAY 与 NOW

•=TODAY() 返回当前日期,格式只有年月日。
•=NOW() 返回当前日期和时间,精确到时分。
这俩是"活的",隔一天打开表格数值就变了。想固定住某个时间点(比如记录"填写日期"),用快捷键 Ctrl + ; 直接插入静态日期,不会跟着变。
拆开一个日期:YEAR、MONTH、DAY、DATE

•=YEAR(A2) 得 2019,=MONTH(A2) 得 3,=DAY(A2) 得 15。做数据透视按年、按月分组时经常先这样把年份或月份单独提出来。
•=DATE(2020,3,23) 把零散的年、月、日数字组装成一个真正的日期。三列分别是年、月、日时,用 DATE 合回一个日期列。
算两个日期之间:DAYS 与 DATEDIF
DAYS 算天数差
语法 =DAYS(结束日期, 开始日期),返回相差天数。
• 开始日期 C2 是 2019-04-10、结束日期 D2 是 2019-04-15,=DAYS(D2,C2) 得 5。注意结束在前、开始在后,写反了得负数。
DATEDIF 算年数月数(隐藏函数)
这个函数很特殊,Excel 不会自动提示它、帮助里也查不到,但确实能用,语法 =DATEDIF(开始日期, 结束日期, 单位)。开始日期必须早于结束日期,否则报错。
单位字母决定结果:"Y" 整年数、"M" 整月数、"D" 整天数。
• 算年龄:=DATEDIF(A2,TODAY(),"Y"),从出生到今天满了多少岁。
• 算工龄多少个月:=DATEDIF(A2,TODAY(),"M")。
• 算入职到今天多少天:=DATEDIF(A2,TODAY(),"D")。
DAYS 和
结束-开始相减结果一样,DATEDIF 的强项是能按整年、整月切。算年龄这类"满几年"的需求,只有 DATEDIF 能一步给出周岁。
定位到月末和周几:EOMONTH、WEEKDAY

EOMONTH 返回月末
语法 =EOMONTH(日期, 往前/往后几个月),返回对应月份的最后一天,0 是当月,正数往后、负数往前。
•=EOMONTH(A2,0) 得 A2 那个月的月末 2019-03-31。
•=EOMONTH(A2,1) 得下个月月末 2019-04-30。算还款日、账期截止常用。
WEEKDAY 返回星期几
语法 =WEEKDAY(日期, [类型]),返回一个数字代表星期几。类型省略或填 1 时,周日算 1、周六算 7;填 2 时改成周一算 1、周日算 7。
•=WEEKDAY(A2,2) 得 5,代表 A2(2019-03-15)是星期五(类型 2 下周一算 1,周五正好是 5)。
• 想把结果直接显示成"星期三"这种中文,用 TEXT:=TEXT(A2,"aaaa")。
算工作日:NETWORKDAYS 与 WORKDAY
这两个函数默认按周一到周五是工作日、周六周日休息来算,还能传假日清单一起排除。带 .INTL 后缀的版本多一个"休息日模式"参数,用来应对双休不是周六周日的情况。

NETWORKDAYS.INTL 数工作日
语法 =NETWORKDAYS.INTL(开始日期, 结束日期, [休息日模式], [假期区域]),返回这段时间里的工作日天数。
• A2 到 B2 一个月,中间扣掉周末:=NETWORKDAYS.INTL(A2,B2)。
• 第三个参数指定哪天休息,比如填 11 代表"只有周日休息";再挂上假期区域 =NETWORKDAYS.INTL(A2,B2,11,E1:E2) 把法定节假日也扣掉。
WORKDAY / WORKDAY.INTL 推算日期
语法 =WORKDAY(开始日期, 几天, [假期]),从某天起跳过周末往后(或往前,天数为负)推 N 个工作日,返回具体日期。
• 9 月 10 号入职,5 个工作日后是哪天:=WORKDAY(A2,5)。
• 带假期:=WORKDAY(A2,5,"2019-9-13") 把中间某个放假日也跳过。
• 休息日不是标准双休时用 =WORKDAY.INTL(A2,6,11),11 表示只有周日休息。
NETWORKDAYS 和 WORKDAY 方向相反,一个"给日期范围、数出几个工作日",一个"给工作日数、算出哪天"。做项目排期、算到账工期时两个经常搭配用。
一张表速查
=TODAY() | ||
=DATE(2020,3,23) | ||
=YEAR(A2) | ||
=DAYS(D2,C2) | ||
=DATEDIF(A2,TODAY(),"Y") | ||
=EOMONTH(A2,0) | ||
=WEEKDAY(A2,2) | ||
=NETWORKDAYS.INTL(A2,B2) | ||
=WORKDAY(A2,5) |
感谢阅读,欢迎关注我的公众号

扫码关注「Hai分享」,获取更多干货内容















































































