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

Excel多工作表按唯一ID合并:重复ID行插入与拆分需求

高效解决多工作表ID匹配信息拆分展示问题

方案一:Power Query(推荐,低手动、可复用)

这是Excel自带的工具,不用写复杂公式或代码,就能自动完成数据合并和拆分:

    1. 导入所有工作表数据
      点击「数据」选项卡 → 「获取数据」→「从文件」→「从工作簿」,选中当前工作簿。在导航器里勾选除merged_sheet外的所有工作表,点击「转换数据」进入编辑器。
    1. 合并所有附加信息表
      点击「主页」→「追加查询」→「追加多个查询」,选中所有导入的工作表,生成一个包含全部ID和附加信息的合并表。
    1. 关联唯一ID表
      再次导入merged_sheet:「获取数据」→「从工作簿」→「当前工作簿」,勾选merged_sheet后导入。点击「主页」→「合并查询」→「合并查询作为新查询」,选择唯一ID表的A列、附加信息合并表的A列,连接类型选「左外部」,确定。
    1. 展开匹配信息
      点击合并后新列的展开按钮,勾选需要展示的附加信息列(比如B列),取消前缀勾选,确定。此时每个ID的所有匹配信息会自动按行显示。
    1. 加载回Excel
      点击「主页」→「关闭并上载」,选择加载到新工作表或覆盖原merged_sheet(记得先备份数据)。后续数据更新时,右键查询表选「刷新」即可同步。

方案二:VBA宏(一键操作)

如果能启用宏,用代码可以直接完成插入行和拆分:

  • 代码示例:
Sub SplitAndExpandData()
    Dim wsMerged As Worksheet, ws As Worksheet
    Dim lastRowMerged As Long, lastRowWs As Long
    Dim i As Long, j As Long
    
    Set wsMerged = ThisWorkbook.Worksheets("merged_sheet")
    lastRowMerged = wsMerged.Cells(Rows.Count, "A").End(xlUp).Row
    
    ' 遍历所有非merged_sheet的工作表
    For Each ws In ThisWorkbook.Worksheets
        If ws.Name <> "merged_sheet" Then
            lastRowWs = ws.Cells(Rows.Count, "A").End(xlUp).Row
            ' 从下往上遍历merged_sheet的ID,避免插入行打乱序号
            For i = lastRowMerged To 2 Step -1
                ' 查找当前ID在当前工作表的所有匹配项
                For j = lastRowWs To 2 Step -1
                    If ws.Cells(j, "A").Value = wsMerged.Cells(i, "A").Value Then
                        ' 插入新行并复制ID和附加信息
                        wsMerged.Rows(i + 1).Insert Shift:=xlDown
                        wsMerged.Cells(i + 1, "A").Value = wsMerged.Cells(i, "A").Value
                        wsMerged.Cells(i + 1, "B").Value = ws.Cells(j, "B").Value
                        ' 若有更多列需要复制,添加类似wsMerged.Cells(i+1, "C").Value = ws.Cells(j, "C").Value的代码
                    End If
                Next j
            Next i
            ' 更新merged_sheet的总行数
            lastRowMerged = wsMerged.Cells(Rows.Count, "A").End(xlUp).Row
        End If
    Next ws
End Sub
  • 使用步骤:
    1. 按Alt+F11打开VBA编辑器,右键工作簿→「插入」→「模块」,粘贴代码。
    2. 确认所有工作表的A列是ID,B列是附加信息(列不同的话,修改代码里的列号,比如"B"改成"C")。
    3. 点击编辑器里的运行按钮,或按F5执行宏。执行前务必备份原工作簿!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 06:15:26