Excel区间匹配公式求助:根据数值所在区间返回对应单元格值
Excel区间匹配公式求助:根据数值所在区间返回对应单元格值
嗨,我来帮你搞定这个Excel区间匹配的问题!
看你目前用的公式=IF(AND(G1>=$E$3:$E$10;G1<=$E$3:$E$10);"No match!";INDEX($D$3:$D$10;IF.ERROR(MATCH(G1;$E$3:$E$10);1))),有两个关键问题:
- AND条件里让G1同时大于等于和小于等于E列的同一个值,这只有当G1完全等于E列某个值时才成立,完全没用到D列的区间范围
- MATCH函数只会找G1在E列的完全匹配项,没法处理“落在某个区间内”的逻辑,所以只有当D、E值在同一列上下排列(相当于单点区间)时才偶然有效
我给你分两种常见场景提供解决方案:
场景1:D列是区间下限,E列是区间上限
如果你的表格是D列作为区间起始值,E列作为区间结束值(比如D3=0、E3=10,对应要返回的内容在D列),要判断G列数值落在哪个区间并返回对应行的内容,可以用下面的公式:
新版Excel(支持动态数组,无需按组合键)
=IFERROR(INDEX($D$3:$D$10,MATCH(TRUE,(G1>=$D$3:$D$10)*(G1<=$E$3:$E$10),0)),"No match!")
原理:用(G1>=$D$3:$D$10)*(G1<=$E$3:$E$10)生成一组逻辑值,找到第一个TRUE的位置(也就是G1所在的区间行),再用INDEX返回对应D列的内容,IFERROR用来处理无匹配的情况。
旧版Excel(需按组合键输入数组公式)
输入同样的公式后,不要直接回车,按下Ctrl+Shift+Enter组合键,公式会自动加上大括号(不要手动添加):
{=IFERROR(INDEX($D$3:$D$10,MATCH(TRUE,(G1>=$D$3:$D$10)*(G1<=$E$3:$E$10),0)),"No match!")}
场景2:E列是升序排列的区间分界点
如果你的区间是按E列的分界点划分的(比如E3=10对应“低”、E4=20对应“中”、E5=30对应“高”,即≤10为低,11-20为中),且E列已经按升序排列,用LOOKUP会更简洁:
=IFERROR(LOOKUP(G1,$E$3:$E$10,$D$3:$D$10),"No match!")
原理:LOOKUP会自动找到小于等于G1的最大E值,返回对应的D列内容,非常适合这种连续的区间匹配场景。
备注:内容来源于stack exchange,提问作者jj789cafo
相关产品推荐
相关产品推荐

