Excel跨午夜时间匹配IF函数失效问题求助
解决方案
核心问题分析
Excel中跨午夜的时间会被存储为「日期+时间」的数值(整数部分对应日期,小数部分对应时间,比如01/01/1900 00:03:16对应的数值是1.0022685185),而你原公式的时段判断用的是当日纯时间(数值小于1),导致跨午夜的时间无法匹配条件。
方法1:直接修改原公式(推荐)
将公式中所有的AO16替换为MOD(AO16,1),MOD函数会提取时间的小数部分(剥离日期整数部分),确保无论AO列是当日时间还是跨午夜的日期+时间,都能以纯时间值参与匹配。
修正后的公式(同时修复了原公式的标点错误):
=IF(AND(MOD(AO16,1)>$BI$11,MOD(AO16,1)<$BI$12),$BK$11, IF(AND(MOD(AO16,1)>$BI$13,MOD(AO16,1)<$BI$14),$BK$13, IF(AND(MOD(AO16,1)>$BI$15,MOD(AO16,1)<$BI$16),$BK$15, IF(AND(MOD(AO16,1)>$BI$17,MOD(AO16,1)<$BI$18),$BK$17, IF(AND(MOD(AO16,1)>$BI$19,MOD(AO16,1)<$BI$20),$BK$19, IF(AND(MOD(AO16,1)>$BL$11,MOD(AO16,1)<$BL$12),$BN$11, IF(AND(MOD(AO16,1)>$BL$13,MOD(AO16,1)<$BL$14),$BN$13, IF(AND(MOD(AO16,1)>$BL$15,MOD(AO16,1)<$BL$16),$BN$15, IF(AND(MOD(AO16,1)>$BL$17,MOD(AO16,1)<$BL$18),$BN$17, IF(AND(MOD(AO16,1)>$BL$19,MOD(AO16,1)<$BL$20),$BN$19, "00:00:00")))))))))
方法2:用辅助列预处理时间
如果不想修改原公式,可新增辅助列(如AP列),输入以下公式提取AO列的纯时间:
=MOD(AO16,1)
将AP列格式设置为hh:mm:ss,再把原公式中的AO16替换为AP16即可。
内容的提问来源于stack exchange,提问作者nozu1984
相关产品推荐
相关产品推荐

