如何使用INDEX/MATCH数组公式匹配区间数值并返回对应风险值
解决INDEX/MATCH数组公式匹配ID和数值区间的问题
首先,你的数据表格整理如下:
| ID | Low Number | High Number | Risk |
|---|---|---|---|
| AAA | 0 | 33 | None |
| AAA | 34 | 75 | Moderate |
| BBB | 0 | 54 | Low |
| BBB | 55 | 100 | High |
| CCC | 0 | 25 | N/A |
| CCC | 26 | 50 | Mild |
| CCC | 51 | 100 | Severe |
你原来的公式失败主要有三个问题:
- 括号位置错误:MATCH函数的第三个参数
0被放在了括号外,导致语法错误; - 范围包含表头:公式里的
$A$1:$A$32包含了表头行,会干扰匹配逻辑; - 范围过大:用了32行的范围但实际只有7行数据,空行会导致匹配异常。
修正后的数组公式(旧版Excel需按Ctrl+Shift+Enter)
假设数据行是A2:D8(表头为A1:D1),G1存ID,H1存待匹配数值,使用以下公式:
=INDEX($D$2:$D$8,MATCH(1,($G$1=$A$2:$A$8)*($H$1>=$B$2:$B$8)*($H$1<=$C$2:$C$8),0))
- 公式逻辑:通过
($G$1=$A$2:$A$8)匹配ID,($H$1>=$B$2:$B$8)*($H$1<=$C$2:$C$8)匹配数值所在区间,三个条件相乘得到1的位置就是目标行,再用INDEX返回对应的Risk值。 - 验证:当G1=AAA、H1=35时,会返回
Moderate,符合预期。
替代方案(Excel 365/2021及以上版本)
如果你使用的是支持动态数组的Excel版本,无需按Ctrl+Shift+Enter,直接用XLOOKUP更简洁:
=XLOOKUP(1,($A$2:$A$8=$G$1)*($H$1>=$B$2:$B$8)*($H$1<=$C$2:$C$8),$D$2:$D$8)
内容的提问来源于stack exchange,提问作者SkysLastChance
相关产品推荐
相关产品推荐

