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

Excel带通配符多值VLOOKUP及提取首个匹配位置的技术咨询

提取首个匹配Text Locations到Texts表的解决方案

方法1:XLOOKUP函数(Excel 365/2021+)

如果你的Excel版本支持XLOOKUP,这是最简洁的方案。假设要匹配Texts表的SearchA字段与Extended表的Text字段(通配符模糊匹配),在Texts表的First Location列第一个单元格(如C2)输入:

=XLOOKUP("*"&A2&"*", Extended!$B:$B, Extended!$A:$A, "无匹配", 2, 1)

参数说明:

  • "*"&A2&"*":用通配符实现模糊匹配,适配需求1的匹配逻辑
  • Extended!$B:$B:Extended表的Text字段范围
  • Extended!$A:$A:要提取的Text Locations字段范围
  • "无匹配":未找到匹配时的默认值
  • 2:启用通配符模糊匹配
  • 1:返回第一个匹配项

如果需要同时匹配SearchA或SearchB,用以下公式:

=XLOOKUP(TRUE, ISNUMBER(SEARCH(A2, Extended!$B:$B))+ISNUMBER(SEARCH(B2, Extended!$B:$B))>0, Extended!$A:$A, "无匹配", 0, 1)

SEARCH不区分大小写,若要区分大小写换用FIND。

方法2:INDEX+AGGREGATE函数(兼容旧版Excel)

针对不支持XLOOKUP的旧版Excel,用组合函数实现:

=IFERROR(INDEX(Extended!$A:$A, AGGREGATE(15, 6, ROW(Extended!$B:$B)/(ISNUMBER(SEARCH(A2, Extended!$B:$B))), 1)), "无匹配")

逻辑说明:

  • ROW(Extended!$B:$B)/(匹配条件):生成所有匹配行的行号,不匹配的行返回错误值
  • AGGREGATE(15,6,...):忽略错误值,提取最小的行号(即第一个匹配行)
  • INDEX:根据行号返回对应的Text Locations

同样,若要匹配SearchA或SearchB,将条件替换为:

(ISNUMBER(SEARCH(A2, Extended!$B:$B))+ISNUMBER(SEARCH(B2, Extended!$B:$B))>0)

方法3:Power Query批量处理

适合数据量较大或需要重复更新的场景:

  1. 分别将Texts表和Extended表加载到Power Query(数据→从表格/区域)
  2. 在Texts表的查询编辑器中,点击合并查询→合并为新查询
  3. 选择Extended表,设置匹配规则为「Text包含SearchA」(根据需求1的匹配逻辑调整),连接类型选「左外部」
  4. 展开合并的列,仅保留Text Locations字段
  5. 按SearchA、SearchB、Note分组,在分组设置中对Text Locations选择「第一个」聚合方式
  6. 关闭并上载结果到Excel,替换原Texts表或生成新表

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 16:15:29