Excel跨表/跨工作簿模糊匹配问题:vlookup等公式未得到预期输出
你之前的所有公式都搞反了查找逻辑:你需要为表2的每一行TAG匹配对应的Code,正确逻辑是「检查当前表2的TAG文本中,是否包含表1任意一个Name关键词,找到匹配项后返回对应的Code,无匹配返回N/A」,而非用表1的Name去搜索表2的TAG列。
额外注意:由于你的关键词存在包含关系(slip on包含slip),使用公式前请先将表1的Name列按「文本长度从长到短」排序,保证长关键词会被优先匹配,避免短关键词提前命中导致结果错误。
方案1:XLOOKUP公式(适用于Excel 365/2021及以上版本)
在表2TAG列右侧的第一个空白单元格(例如B2)输入以下公式,下拉填充即可:=XLOOKUP(TRUE,ISNUMBER(SEARCH('table 1'!$A$2:$A$4,A2)),'table 1'!$B$2:$B$4,"N/A",0)
公式中'table 1'!$A$2:$A$4为表1Name列的数据范围,'table 1'!$B$2:$B$4为表1Code列的数据范围,可根据你的实际数据行数调整范围。SEARCH函数默认不区分大小写,可兼容你示例中Shoe大写匹配shoe的需求。
方案2:INDEX+MATCH公式(兼容所有Excel版本)
在表2对应单元格输入以下公式,按Ctrl+Shift+Enter触发数组运算生效,之后下拉填充即可:=IFERROR(INDEX('table 1'!$B$2:$B$4,MATCH(TRUE,ISNUMBER(SEARCH('table 1'!$A$2:$A$4,A2)),0)),"N/A")
方案3:Google Sheets适用公式
逻辑与Excel一致,直接输入以下公式下拉即可,无需额外触发数组运算:=IFERROR(INDEX('table 1'!$B$2:$B$4,MATCH(TRUE,ARRAYFORMULA(ISNUMBER(SEARCH('table 1'!$A$2:$A$4,A2))),0)),"N/A")
按上述方案计算后,你给出的示例数据对应结果如下:
- blue color cut Shoe → shoe
- red color canvas shoe → shoe
- green see through slip on → shoe
- apparel inner slip → apparel
- safari high heel → N/A
内容的提问来源于stack exchange,提问作者Jacintha

