如何基于日期与时间字段编写公式自动匹配对应班次?
班次匹配公式解决方案
核心逻辑
先判断日期属于工作日(周一至周五)还是周末(周六至周日),再根据时间区间匹配对应班次。以下基于Excel环境提供公式,假设:
A列为day字段(值为中文“周一”至“周日”)B列为time字段(标准时间格式,如06:45)- 目标结果放在
C列
基础公式(中文星期)
在C2单元格输入以下公式,下拉填充即可:
=IF(OR(A2="周一",A2="周二",A2="周三",A2="周四",A2="周五"), IF(AND(B2>=TIME(6,30,0),B2<TIME(15,30,0)),"班次1(06:30-15:30)", "班次2(15:30-01:30)"), IF(AND(B2>=TIME(5,30,0),B2<TIME(17,30,0)),"班次1(05:30-17:30)", "班次2(17:30-05:30)") )
公式说明
- 工作日判断:用
OR函数匹配周一至周五的中文值 - 时间区间匹配:
- 工作日:时间在
06:30(含)至15:30(不含)返回班次1,其余时间返回班次2 - 周末:时间在
05:30(含)至17:30(不含)返回班次1,其余时间返回班次2
- 工作日:时间在
- 跨天处理:对于
00:00-01:30的时间,因不在早班区间内,会自动匹配到跨天的晚班,符合需求
进阶公式(用日期自动判断星期)
如果没有单独的day字段,只有日期列(如D列),可以用WEEKDAY函数直接提取星期(WEEKDAY(D2,2)表示周一=1、周日=7):
=IF(AND(WEEKDAY(D2,2)>=1,WEEKDAY(D2,2)<=5), IF(AND(B2>=TIME(6,30,0),B2<TIME(15,30,0)),"班次1(06:30-15:30)", "班次2(15:30-01:30)"), IF(AND(B2>=TIME(5,30,0),B2<TIME(17,30,0)),"班次1(05:30-17:30)", "班次2(17:30-05:30)") )
注意事项
- 确保
time列是标准时间格式(不是文本),否则无法与TIME函数生成的时间值比较 - 可根据需求修改班次名称(如将“班次1”改为“白班”)
内容的提问来源于stack exchange,提问作者Marc
相关产品推荐
相关产品推荐

