如何在Microsoft Excel中匹配值至反向区间并返回对应结果?
反向区间匹配的可行实现方案
你的核心问题是原公式的条件逻辑和反向区间不匹配——因为B20:B30的数值大于C20:C30,原公式里(B2>=B20:B30)*(B2<=C20:C30)的条件永远无法成立(不可能同时满足大于大数且小于小数),需要调整逻辑来适配反向区间规则。
以下是两种可行的实现方法:
1. 修正数组公式(兼容旧版Excel)
把条件改为判断B2是否落在B列数值和C列数值之间(即B2 <= B列值 且 B2 >= C列值),输入完成后按Ctrl+Shift+Enter触发数组计算:
=IFERROR(INDEX(D20:D30, MATCH(TRUE, (B2<=B20:B30)*(B2>=C20:C30), 0)), "Out of range")
这个公式会遍历B20:C30的每个区间,找到第一个符合条件的区间后返回对应D列的值。
2. 用XLOOKUP简化写法(适用于Excel 365/2021及以后版本)
如果你的Excel版本支持XLOOKUP,无需手动触发数组输入,直接使用更简洁的公式:
=IFERROR(XLOOKUP(TRUE, (B2<=B20:B30)*(B2>=C20:C30), D20:D30), "Out of range")
针对你给出的例子调整
你提到输入130时要返回对应D列的9,假设对应区间是B20=157.38、C20=131.14,那130并不满足130<=157.38且130>=131.14。如果你的规则是B2小于C列值或大于B列值时匹配该区间,把条件中的*(逻辑与)换成+(逻辑或)即可:
=IFERROR(INDEX(D20:D30, MATCH(TRUE, (B2<=C20:C30)+(B2>=B20:B30), 0)), "Out of range")
此时130满足130<=131.14,会正确返回D20的9。
内容的提问来源于stack exchange,提问作者mkumars
相关产品推荐
相关产品推荐

