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

如何使用VBA将两个数据透视表合并为一个?

可行解决方法

方法1:整合原始数据源(结合简易VBA简化操作)

数据透视表无法直接合并,优先处理底层原始数据:

  1. 先将'A Data'和'B Data'中的原始数据源(不是透视表结果)合并为统一表格,再基于新表创建透视表
  2. 手动复制粘贴效率低的话,用这段适合新手的VBA脚本快速合并:
Sub MergeDataSources()
    Dim wsA As Worksheet, wsB As Worksheet, wsNew As Worksheet
    Dim lastRowA As Long, lastRowB As Long, lastRowNew As Long
    
    ' 指定数据源工作表
    Set wsA = ThisWorkbook.Worksheets("A Data")
    Set wsB = ThisWorkbook.Worksheets("B Data")
    
    ' 新建工作表存储合并后的数据
    Set wsNew = ThisWorkbook.Worksheets.Add
    wsNew.Name = "Merged Data"
    
    ' 复制A表的表头与所有数据
    wsA.UsedRange.Copy wsNew.Range("A1")
    lastRowNew = wsNew.UsedRange.Rows.Count
    
    ' 复制B表数据(跳过表头,避免重复)
    lastRowB = wsB.UsedRange.Rows.Count
    wsB.Range("A2:" & wsB.Cells(lastRowB, wsB.UsedRange.Columns.Count).Address).Copy _
        wsNew.Cells(lastRowNew + 1, 1)
    
    ' 可选:删除完全重复的记录(根据实际列数调整数组参数)
    wsNew.UsedRange.RemoveDuplicates Columns:=Array(1, 2, 3), Header:=xlYes
End Sub
  1. 运行脚本后,在生成的"Merged Data"表上插入新数据透视表,将「月份」拖入行/列区域,其他字段按需添加即可

方法2:用Power Query合并(无需编写代码)

适合不想碰VBA的场景:

  • 选中'A Data'的数据源区域,点击「数据」选项卡→「从表格/区域」,进入Power Query编辑器
  • 点击「追加查询」→「追加查询作为新查询」,选择'B Data'的数据源完成合并
  • 在编辑器中可按需清洗数据(补全缺失列、删除重复值等),然后点击「关闭并上载」到新工作表
  • 基于这个新表创建数据透视表,按月份汇总数据

方法3:合并透视表结果(仅适用于无法获取原始数据源的情况)

如果只能拿到透视表的最终结果:

  • 把两个透视表的结果(跳过表头)复制到同一张空白工作表,确保「月份」列对齐
  • 用SUMIF函数合并相同月份的数值,比如输入=SUMIF($A:$A, $D2, $B:$B)(假设A列是透视表A的月份,B列是对应数值,D列是透视表B的月份)
  • 将整理后的合并数据做成规范表格,再创建新的数据透视表

注意:若两个数据源字段不完全一致,整合时保留所有字段,缺失值留空即可,透视表会自动处理空值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 17:39:57