将3个匹配索引的工作簿合并为1个:VLOOKUP无法返回多值求助
多索引匹配多值的Excel解决方案
方法1:FILTER函数(Excel 365/2021适用)
这是最简便的方案,动态数组函数可直接返回所有匹配结果。
假设主工作簿(每个索引对应一行)的当前单元格索引为A2,要匹配的工作簿(索引对应多行)的索引列是Sheet2!A:A,目标数据列是Sheet2!B:B,在主表对应单元格输入:
=FILTER(Sheet2!B:B, Sheet2!A:A=A2, "无匹配值")
如果需要把所有匹配值合并到单个单元格显示,用TEXTJOIN配合FILTER:
=TEXTJOIN(", ", TRUE, FILTER(Sheet2!B:B, Sheet2!A:A=A2, ""))
方法2:INDEX+SMALL+IF数组公式(兼容旧版Excel)
若你的Excel版本不支持动态数组,使用数组公式(输入后按Ctrl+Shift+Enter确认生效):
假设要提取第n个匹配值,主表索引为A2,目标工作簿的索引范围是Sheet2!$A$2:$A$100,数据范围是Sheet2!$B$2:$B$100,公式如下:
=IFERROR(INDEX(Sheet2!$B$2:$B$100, SMALL(IF(Sheet2!$A$2:$A$100=$A2, ROW(Sheet2!$A$2:$A$100)-ROW(Sheet2!$A$2)+1), COLUMN(A1))), "")
输入完成后横向拖动单元格,即可依次获取该索引对应的第1、2、3...个匹配值,直到返回空值表示无更多结果。
方法3:Power Query批量处理多工作簿
针对大量数据,Power Query能高效完成批量匹配,步骤如下:
- 打开Excel,点击「数据」选项卡 → 「获取数据」→ 「从文件」→ 「从工作簿」,分别导入三个工作簿的数据到Power Query编辑器
- 对存在多行索引的两个工作簿数据,点击「转换」选项卡 → 「分组依据」,选择索引列为分组列,新列名设为「匹配数据」,操作选择「所有行」,随后展开该列的列表内容
- 回到主表数据的查询界面,点击「合并查询」选项卡 → 「合并」,选择主表查询和分组后的查询,匹配列选索引,合并类型选「左外部」
- 展开合并后的列,点击「关闭并上载」,即可将匹配结果加载回Excel工作表
内容的提问来源于stack exchange,提问作者Thomas Turrell
相关产品推荐
相关产品推荐

