如何用vba更改数据透视表的数据源?

在excel中可以基于多种数据源创建数据透视表,其中基于excel单元格区域创建数据透视表是最常见的一种。

通过PivotTable对象的SourceData属性可以返回相应的数据透视表的数据源。

通过查看微软官方的帮助文档发现通过PivotTable对象的SourceData属性只能读取数据源,不能通过PivotTable对象的SourceData属性更改数据透视表的数据源。

但是通过测试,实际上也可以直接通过PivotTable对象的SourceData属性直接更改基于单元格区域创建的数据透视表的数据源。

这也是迄今为止发现的最简单的用vba更改数据透视表数据源的方法。

只是在修改数据透视表的数据源时,需要将具体的数据源的单元格地址赋值给PivotTable对象的SourceData属性。

如下的vba代码举例演示了如何通过修改PivotTable对象的SourceData属性直接更改基于单元格区域创建的数据透视表的数据源:

Sub QQ1722187970()
    Dim oPT  As PivotTable
    Dim oPC As PivotCache
    Dim oWK As Worksheet
    Set oWK = Excel.ActiveSheet
    iRow = oWK.Range("a65536").End(xlUp).Row
    With oWK
        Set oPT = .PivotTables(1)
        With oPT
            '获取原来的数据透视表的数据源
           sOrign = .SourceData
           '直接将数据源更改为其它单元格区域
          .SourceData = oWK.Range("a1:c" & iRow).Address(True, True, xlR1C1, True)
          '获取最新的数据透视表的数据源
          sNew = .SourceData
          '刷新透视表
          .RefreshTable
          '刷新数据源
          .Update
        End With
    End With
End Sub
       

发表评论