Excel中如何筛选两个数据集的匹配ID并生成仅含匹配项的列表?
仅保留两个数据集匹配ID的实现方法
以下是几种实用方案,可根据你的Excel版本和数据量选择:
方法一:用FILTER函数快速提取(Excel 365/2021及以上版本适用)
这是最简便的方式,直接生成仅含匹配项的结果:
- 新建工作表(可命名为「匹配结果」)
- 在A2单元格输入公式,提取两表共有的ID:
=FILTER(Sheet1!A:A, COUNTIF(Sheet2!A:A, Sheet1!A:A)>0) - 在B2单元格输入公式,提取Sheet1对应列的测量数据:
向右拖动填充至需要的列(C、D等)=XLOOKUP(A2, Sheet1!A:A, Sheet1!B:B) - 在对应位置(比如E2)输入公式,提取Sheet2的测量数据:
同样向右拖动填充,即可得到两表匹配ID的完整数据=XLOOKUP(A2, Sheet2!A:A, Sheet2!B:B)
方法二:用Power Query合并(全版本适用,大数据场景友好)
如果数据量较大,Power Query处理更高效且不易出错:
- 点击「数据」选项卡 →「从表格/区域」,分别将Sheet1和Sheet2的数据导入Power Query编辑器(勾选「我的表格有标题」)
- 在编辑器中选中其中一个查询(比如Sheet1的查询),点击「合并查询」→「合并查询作为新查询」
- 合并设置:
- 选择要合并的另一个查询(Sheet2)
- 两表均选中A列(ID列)作为合并键
- 连接类型选择「内部」(仅保留匹配的行)
- 点击确定后,展开合并后的列(勾选需要保留的B、C、D等列),可按需去掉列名前缀
- 点击「关闭并上载」,选择加载到新建工作表,即可得到仅含匹配项的数据集
方法三:辅助列+筛选(旧版Excel兼容方案)
如果你的Excel不支持FILTER或Power Query,可采用传统方法:
- 在Sheet1的空白列(比如F列)输入公式,判断当前ID是否在Sheet2中存在:
向下拖动填充,结果为1表示匹配,0表示无匹配=COUNTIF(Sheet2!A:A, A2) - 筛选Sheet1中F列值为1的行,复制这些行的ID和B、C、D等列到新工作表
- 在新工作表的对应列(比如E列)用XLOOKUP提取Sheet2的对应数据:
填充后若仍有#NA值,直接删除对应行即可=XLOOKUP(A2, Sheet2!A:A, Sheet2!B:B)
内容的提问来源于stack exchange,提问作者Aron Burley
相关产品推荐
相关产品推荐

