如何调整Excel公式,排除晚于Event B的事件以判断A与B是否紧邻
解决Excel时间差比较问题:忽略晚于Event B的事件
需求回顾
你需要实现:当Event A(对应P列)与Event B(对应AX列)的时间差绝对值,小于Event B与所有日期不晚于它的其他事件(H到CH列)的时间差绝对值时,返回"Yes",否则返回"No"。
方案1:修改原有冗长公式(兼容所有Excel版本)
对原有公式的每个比较条件添加判断:如果对应事件的日期晚于AX列,则该条件自动成立(不参与比较)。单个条件的修改规则是:
将原条件ABS(AX14273-P14273)<ABS(AX14273-XX14273)替换为OR(XX14273>AX14273, ABS(AX14273-P14273)<ABS(AX14273-XX14273))(XX代表H、I、J等列)。
修改后的完整公式示例(仅展示前3个条件,其余按规则替换即可):
=IF(AND( OR(H14273>AX14273, ABS(AX14273-P14273)<ABS(AX14273-H14273)), OR(I14273>AX14273, ABS(AX14273-P14273)<ABS(AX14273-I14273)), OR(J14273>AX14273, ABS(AX14273-P14273)<ABS(AX14273-J14273)), ... OR(CH14273>AX14273, ABS(AX14273-P14273)<ABS(AX14273-CH14273)) ),"Yes","No")
方案2:简化函数公式(适合Excel 2019及以上/365)
利用MINIFS函数直接筛选出符合条件的事件并计算最小时间差,大幅缩短公式:
排除Event A自身参与比较的版本
=IF(ABS(AX14273-P14273)<MINIFS(ABS(AX14273-H14273:CH14273), H14273:CH14273, "<="&AX14273, H14273:CH14273, "<>"&P14273),"Yes","No")
允许Event A自身参与比较的版本(若Event A可能早于Event B)
=IF(ABS(AX14273-P14273)<MINIFS(ABS(AX14273-H14273:CH14273), H14273:CH14273, "<="&AX14273),"Yes","No")
Excel 365专属简化版(用FILTER函数)
=IF(ABS(AX14273-P14273)<MIN(ABS(AX14273-FILTER(H14273:CH14273, H14273:CH14273<=AX14273))),"Yes","No")
内容的提问来源于stack exchange,提问作者user30082921
相关产品推荐
相关产品推荐

