分配任务前核查导师可用时间:跨午夜时段Excel公式失效问题
导师课程时段有效性核查问题
我需要核查导师被安排的课程时段是否存在早于其登录时间,或晚于其登出时间的情况。
(注:原问题附带Excel表格截图,展示了课程时段、登录/登出时间的列对应关系)
目前我使用了以下Excel公式,但跨午夜的时段无法正常计算:
=IF(OR(AND(HOUR(G2)<HOUR(AE2), HOUR(K2)>HOUR(AE2)), AND(HOUR(G2)=HOUR(AD2), MINUTE(G2)<MINUTE(AD2)), AND(HOUR(K2)=HOUR(AE2), MINUTE(K2)>MINUTE(AE2))), "Not Available", "Available")
问题原因
原公式通过拆分HOUR()和MINUTE()判断时间,忽略了跨午夜时的日期逻辑(比如登出时间是次日凌晨,数值上小于登录时间),同时仅处理了小时相等时的分钟对比,小时不等的早/晚情况未覆盖。
解决方案公式
直接利用Excel时间的数值特性,分跨午夜和不跨午夜两种情况判断:
=IF(OR( AND(AE2>=AD2, OR(G2<AD2, K2>AE2)), AND(AE2<AD2, AND(G2<AD2, K2>AE2)) ), "Not Available", "Available")
公式逻辑
- 不跨午夜(登出≥登录):只要课程开始早于登录时间,或课程结束晚于登出时间,标记为
Not Available - 跨午夜(登出<登录):仅当课程完全不在导师可用区间(既早于登录时间,又晚于登出时间)时,标记为
Not Available;其余情况(课程落在登录到24:00、00:00到登出之间)均标记为Available
更直观的总分钟数写法
如果需要更清晰的时间对比,可将时间转换为当日总分钟数:
=LET( 课程开始分钟, HOUR(G2)*60+MINUTE(G2), 课程结束分钟, HOUR(K2)*60+MINUTE(K2), 登录分钟, HOUR(AD2)*60+MINUTE(AD2), 登出分钟, HOUR(AE2)*60+MINUTE(AE2), IF( OR( AND(登出分钟>=登录分钟, OR(课程开始分钟<登录分钟, 课程结束分钟>登出分钟)), AND(登出分钟<登录分钟, AND(课程开始分钟<登录分钟, 课程结束分钟>登出分钟)) ), "Not Available", "Available" ) )
内容的提问来源于stack exchange,提问作者Dinesh
相关产品推荐
相关产品推荐

