Excel按时间列判断班次的公式白班输出异常问题求解
公式错误定位
你写的两个公式核心问题是括号位置错位,其次是时间判断边界存在重叠:
- 所有
HOUR(时间值 < 数值)的写法都是错误的:HOUR函数仅支持传入时间格式的参数,你把大小比较的逻辑写在了HOUR的括号内部,Excel会先计算时间值<15这类布尔判断(返回TRUE/FALSE,对应数值1/0),再对这个布尔值取小时数,结果永远是0,导致1班的判断条件永远不成立。 - 原IFS公式的边界判断存在重叠:15点整、23点整这类时间点会同时命中两个班次的判断条件,存在匹配冲突。
原公式问题明细
单IF判断公式
原公式:=IF(AND(HOUR(Table8[@Time]) >7, HOUR(Table8[@Time] <15)),"1st shift")
第二个判断项错误把<15写在了HOUR括号内,判断逻辑完全失效,永远无法返回1班结果。IFS多条件判断公式
原公式:=IFS(AND(HOUR([@Time]) >= 7, HOUR([@Time] <= 15)), "1st shift", AND(HOUR([@Time]) >= 15, HOUR([@Time]) <= 23), "2nd shift", OR(HOUR([@Time]) >= 23, HOUR([@Time]) <= 7), "3rd shift")
所有带<=的小时判断都存在括号错位问题,1班的判断条件永远无法触发;同时15点、23点会同时命中两个班次的判断规则。
正确可用公式
以下公式按通用三班倒时间规则编写:
- 1班/白班:7:00(含)~15:00(不含)
- 2班/夜班:15:00(含)~23:00(不含)
- 3班/通宵班:23:00(含)~次日7:00(不含)
适配你使用的结构化表引用格式,支持IFS函数的Excel版本可直接用:
=IFS( AND(HOUR([@Time])>=7, HOUR([@Time])<15), "1班/白班", AND(HOUR([@Time])>=15, HOUR([@Time])<23), "2班/夜班", TRUE, "3班/通宵班" )
如果使用的Excel版本不支持IFS函数,可使用嵌套IF写法:
=IF(AND(HOUR([@Time])>=7, HOUR([@Time])<15),"1班/白班",IF(AND(HOUR([@Time])>=15, HOUR([@Time])<23),"2班/夜班","3班/通宵班"))
注意:如果你的班次整点归属规则和上述默认规则不同,直接调整判断条件里的
>=/<符号和对应小时数值即可,核心要保证HOUR函数的括号仅包裹时间单元格引用,不要把比较逻辑写到HOUR括号内部。
内容的提问来源于stack exchange,提问作者kca062
相关产品推荐
相关产品推荐

