在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


发表评论