乐于分享
好东西不私藏

凌晨3点报的产量,到底算哪天的?一个Excel公式终结跨天日期归属问题

凌晨3点报的产量,到底算哪天的?一个Excel公式终结跨天日期归属问题

大家好,我是你们的Excel老友——阿秋

前两篇文章分别讲了如何把时间日期合二为一如何从日期时间中提取时间,有做生产统计的朋友私信问我:“我们厂里夜班凌晨报的产量,系统自动算成新的一天,但业务上得归到前一天,有没有办法自动判断?”

说实话,这个问题太典型了。但凡涉及到三班倒、跨天作业的工厂,几乎每天都要被它折磨一次。今天就拿一个公式,彻底帮你搞定夜班产量归属问题。

一、场景还原

假设你是一家制造工厂的生产统计员,每天要汇总各产线的“产量上报时间”。

你的主管说:“白班是早上8点到下午5点,产量报今天的;中班是下午5点到凌晨0点,产量也算今天的;夜班是凌晨0点到早上6点,产量算昨天的。”

翻译成人话就是:

班次

上报时间段

归属日期

白班

08:00 ~ 17:00

当天

中班

17:00 ~ 23:59

当天

夜班

00:00 ~ 06:00

前一天

表格如下:
二、公式拆解:一行代码里的三层逻辑
生产日期(E2)公式:
=LET(  a,MOD(D2,1),  b,INT(D2),  IFS(  AND(a>=8/24,a<=1),b,  AND(a>=0,a<8/24),b-1  ))

💡 这里为什么不直接用 IF 嵌套?

LET定义变量法更加直观简洁,学会LET函数,再复杂的条件判断都能信手拈来!

第1层:变量定义(LET函数)

LET 是Excel 365/2021的新函数,作用是给中间结果起名字,让长公式更易读。

 • 令 a = MOD(D2,1) → 提取时间部分
 • 令 b = INT(D2)  → 提取日期部分

小知识: Excel中的日期时间本质上是一个小数。整数部分是日期,小数部分是时间。MOD(D2,1) 相当于只保留小数,即时间;INT(D2) 向下取整得到日期。


第2层:核心判断(IFS多条件分支)
IFS 按顺序检查每个条件,遇到第一个满足的就返回对应值。
条件1: AND(a>=8/24, a<=1)
 •  8/24 ≈ 0.333,代表早上8点
 •  1 代表午夜24点(即第二天的0点)
含义: 时间在08:00到24:00之间 → 归属当天日期 b
条件2: AND(a<8/24,a>=0)
 •  8/24≈ 0.333 代表早上8点
 •  0 即午夜0点
含义: 时间在0:00到 07:59之间  归属前一天  b-1

条件3: TRUE, ""

兜底条件,所有不满足上述两个条件的(即06:00~08:00),返回空


第3层:结果验证
D2单元格的值是 2026/5/9 06:03:07(夜班上报):
 •  a = 06:03 → 0.252
 •  b = 2026/5/9
条件2成立(0.252 < 0.3333)→ 返回 b-1 = 2026/5/8 ✅
D5单元格的值是 2026/5/8 22:52(中班上报):
 •  a = 22:52 → 0.953
 •  b = 2026/5/8
条件1成立(0.333 < 0.953 < 1)返回 b = 2026/5/8 ✅
完美实现了“夜班产量归前一天”的需求。

三、举一反三:你能用它做什么?
这个公式的精髓在于 “时间区间映射日期归属” ,你可以轻松扩展到:
场景1:三班倒考勤统计
工厂有三班倒:早班6:00~14:00、中班14:00~22:00、夜班22:00~次日6:00。考勤日应记为上班那天的日期。
=LET(a,MOD(D2,1),b,INT(D2),IFS(AND(a>=22/24,a<=1),b,AND(a>=0,a<6/24),b-1,TRUE,""))
场景2:设备巡检记录归属
设备夜间巡检(0:00~4:00)的异常记录,应归入前一天的巡检台账。
=LET(a,MOD(D2,1),b,INT(D2),IFS(AND(a>=0,a<4/24),b-1,TRUE,b))
这里简单粗暴:只要是凌晨0点到4点的记录,全部减一天,其余保持原日期。

💌 注意事项
1、时间边界问题
公式中 a <= 1 包含了24:00整点,但Excel中24:00实际上是第二天的0:00。如果你的数据中有精确的24:00,建议先统一转换为0:00再处理。
2、日期格式一致性
INT 函数依赖Excel的日期序列值,请确保D列确实是标准日期时间格式,而非文本。可以用 ISNUMBER(D2) 快速检查。
3、版本兼容性
LET 和 IFS 都是较新的函数,Excel 2019及更早版本不支持。如果你用的是旧版,可以用嵌套 IF 替代:
=IF(AND(MOD(D2,1)>=8/24,MOD(D2,1)<=1),INT(D2),   IF(AND(MOD(D2,1)>=0,MOD(D2,1)<6/24),INT(D2)-1,""))

💡 IF嵌套法稍显复杂,尤其是条件比较多的时候。

相反,使用 LET 函数定义变量,更加直观和简洁

📌 今天讲的这个公式展示了Excel中一个非常重要的思维方式:将复合问题拆解为独立维度处理。
 •  用 MOD 剥离时间
 •  用 INT 锁定日期
 •  用 IFS 建立映射关系
掌握了这个套路,以后遇到任何“按时间段重分类”的问题,你都能举一反三。
如果你觉得这篇文章对你有帮助,欢迎点赞、在看、分享给你的同事朋友。有什么Excel难题,也欢迎在评论区留言~
🔗 本文示例模板:
https://pan.baidu.com/s/163empxkkNH9VIRKP4LYl3Q?pwd=9527
💬 相关文章:
“日期”和“时间”合二为一居然如此简单?知道真相的我,眼泪掉下来...
从日期时间中提取时间,4种方法到底选哪个?看完这篇不再纠结!
EXCEL中日期相关的17个函数,你都了解吗

#Excel函数#时间判断#LET函数#IFS函数#职场效率#工厂管理