在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
发表评论