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

基于ID合并两个工作表数据,插入匹配ID的多行至Sheet1

解决方案:将Sheet2多行匹配数据展开到Sheet1

我来帮你搞定这个需求!你要的其实是把Sheet2中同一个ID对应的多条记录逐一展开到Sheet1,让每个ID的每一条匹配数据都在Sheet1单独占一行对吧?下面给你两种实用方案,按需选择:

方案一:Power Query(推荐,高效批量处理)

这个方法不用写复杂公式,适合数据量较大或者需要后续更新的场景:

  • 打开你的Excel工作簿,点击顶部「数据」选项卡,选择「获取数据」>「自文件」>「自工作簿」,选中当前打开的这个工作簿。
  • 在弹出的「导航器」窗口里,同时勾选Sheet1和Sheet2,然后点击「加载到」>「仅创建连接」,点击确定。
  • 再次点击「数据」>「获取数据」>「合并查询」>「合并查询作为新查询」:
    • 上半部分选择Sheet1,下半部分选择Sheet2,匹配列都选A列(ID列),连接类型选「左外部」(确保Sheet1里的所有ID都不会丢失)。
  • 进入合并后的查询编辑器后,找到Sheet2对应的列(列名大概是「Sheet2」),点击列标题右侧的展开按钮(带箭头的图标),勾选你要导入的B、C列,取消「使用原始列名作为前缀」的勾选,点击确定。
  • 现在你就能看到每个ID对应的所有Sheet2行都展开了,直接点击「关闭并上载」,选择把结果上载到新工作表(建议先看结果再覆盖原Sheet1)。
  • 后续Sheet2新增数据的话,右键新工作表的查询区域,选择「刷新」就能自动更新数据。

方案二:数组公式+辅助列(适合不想用Power Query的场景)

如果你的Excel版本是365/2021(支持动态数组),或者愿意用数组公式,可以试试这个方法:

假设Sheet1的ID在A列,Sheet2的ID在A列,B、C列是需要提取的数据:

  • 在Sheet1的B2单元格输入公式:
    =INDEX(Sheet2!B:B, SMALL(IF(Sheet2!$A:$A=$A2, ROW(Sheet2!$A:$A)), COLUMN(A:A)))
    
    • 旧版Excel输入完要按Ctrl+Shift+Enter触发数组公式;新版直接回车即可。
  • 把B2的公式向右拖到C列,再向下批量拖动公式,直到出现#NUM!,就说明这个ID对应的所有Sheet2数据都提取完了。
  • 最后可以通过筛选功能,把#NUM!的行删掉,整理成干净的表格。

注意事项

  • Power Query方案更适合长期维护的表格,刷新方便,性能更好;
  • 公式方案如果数据量超过1万行可能会卡顿,需要手动处理空行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 09:31:21