You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Microsoft Excel:在单元格区域中查找精确或近似匹配的单元格值

Excel 实现指定区域的精确/近似匹配查找

一、精确匹配

如果需要完全匹配查找文本,直接使用XLOOKUP或VLOOKUP即可:

  • XLOOKUP公式(Excel 365及以上):
    =XLOOKUP(B2,A:A,A:A,"未找到",0)
    
  • VLOOKUP公式(兼容全版本):
    =VLOOKUP(B2,A:A,1,FALSE)
    

参数0/FALSE代表严格精确匹配,找不到时返回指定的“未找到”文本。

二、近似匹配(查找文本为目标单元格的分散子串)

针对你示例中「用“John George”匹配“John David George”」的需求,即查找文本的所有单词按顺序出现在目标单元格中(中间可穿插其他内容),提供以下两种方案:

方案1:Excel 365/2021 动态数组公式

利用TEXTSPLIT拆分查找文本为单词,再通过SEARCH校验所有单词是否存在:

=XLOOKUP(TRUE,BYROW(A:A,LAMBDA(x,AND(ISNUMBER(SEARCH(TEXTSPLIT(B2," "),x))))),A:A,"未找到")
  • 逻辑:TEXTSPLIT(B2," ")将查找文本按空格拆分为单个单词;BYROW遍历A列每个单元格,用AND(ISNUMBER(SEARCH(...)))判断所有单词是否都在当前单元格中;XLOOKUP返回第一个符合条件的员工姓名。

方案2:兼容旧版Excel的数组公式

如果你的Excel版本不支持动态数组,使用以下数组公式(输入后按Ctrl+Shift+Enter确认):

=INDEX(A:A,MATCH(1,MMULT(--ISNUMBER(SEARCH(TRIM(MID(SUBSTITUTE(B2," ",REPT(" ",99)),(ROW(INDIRECT("1:"&LEN(B2)-LEN(SUBSTITUTE(B2," ",""))+1))-1)*99+1,99)),A:A)),ROW(INDIRECT("1:"&LEN(B2)-LEN(SUBSTITUTE(B2," ",""))+1))),0),0)
  • 逻辑:通过字符串拆分技巧将查找文本拆分为单词列表,MMULT计算每行匹配的单词数量,MATCH定位第一个所有单词都匹配的行,最终用INDEX返回对应姓名。

注意事项

  • 区分大小写匹配:将公式中的SEARCH替换为FIND即可。
  • 优化性能:将公式中的A:A替换为具体单元格区域(如A2:A100),避免遍历整列。
  • 多结果返回:若需要返回所有匹配项,Excel 365可使用FILTER函数:
    =FILTER(A:A,BYROW(A:A,LAMBDA(x,AND(ISNUMBER(SEARCH(TEXTSPLIT(B2," "),x))))),"未找到")
    

内容的提问来源于stack exchange,提问作者Daniel Kimani

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 15:27:24