Excel中查找数组部分匹配项并返回对应相邻单元格数值的技术问题
Excel中查找数组部分匹配项并返回对应相邻单元格数值的技术问题
你现在遇到的问题我太懂了——明明已经找到匹配的名字了,却拿不到旁边的数字,确实闹心!我来帮你把公式改一改,直接搞定这个需求:
首先,先拆解你现有公式的问题:你用INDEX($A$8:$A$11,...)指定的返回区域是名字列(A8:A11),所以自然只会返回名字。要拿到对应的数值,只需要调整INDEX的引用范围,再确保匹配逻辑没问题就行。
修正后的公式(适配不同Excel版本)
新版Excel(365/2021及以后,支持动态数组)
=INDEX($B$8:$B$11,XMATCH(TRUE,ISNUMBER(SEARCH($A$8:$A$11,A2)),0))
兼容旧版Excel(2019及以前)
=INDEX($B$8:$B$11,MATCH(1,ISNUMBER(SEARCH($A$8:$A$11,A2))*1,0))
注意:旧版Excel需要按 Ctrl+Shift+Enter 作为数组公式输入,不能直接回车。
关键改动和逻辑说明
- 核心调整:把
INDEX的第一个参数从$A$8:$A$11改成$B$8:$B$11,这直接指定了返回的是数值所在的列(也就是名字对应的相邻单元格区域)。 - 匹配逻辑和你原来的一致:
ISNUMBER(SEARCH($A$8:$A$11,A2))会检查A2的全名里是否包含A8:A11中的简称,返回一组TRUE/FALSE;乘以1是把布尔值转成1/0,方便MATCH定位到第一个匹配项的位置。
额外实用小技巧
如果担心出现找不到匹配项的情况,可以用IFERROR包裹公式,避免显示扎眼的#N/A:
=IFERROR(INDEX($B$8:$B$11,MATCH(1,ISNUMBER(SEARCH($A$8:$A$11,A2))*1,0)),"无匹配结果")
赶紧把公式替换进去试试,应该就能直接拿到你想要的数字啦!要是还有其他细节问题随时说~




