在单个Excel工作表上同时更新多个数据透视表的数据源有没有简单的方法?
所有的数据透视表都引用相同的命名区域,但我需要创建第二个工作表,其具有相同的数据透视表,但访问不同的命名区域。
理想情况下,我希望能够进行某种搜索和替换操作(就像您可以对公式执行的操作一样),而不是手动更新每个数据透视表。
有什么建议吗?
在单个Excel工作表上同时更新多个数据透视表的数据源有没有简单的方法?
所有的数据透视表都引用相同的命名区域,但我需要创建第二个工作表,其具有相同的数据透视表,但访问不同的命名区域。
理想情况下,我希望能够进行某种搜索和替换操作(就像您可以对公式执行的操作一样),而不是手动更新每个数据透视表。
有什么建议吗?
Sheet2
参数更新为具有新数据透视表的工作表名称,并将 Data2
参数更新为您的新命名区域。Sub Change_Pivot_Source()
Dim pt As PivotTable
For Each pt In ActiveWorkbook.Worksheets("Sheet2").PivotTables
pt.ChangePivotCache ActiveWorkbook.PivotCaches.Create _
(SourceType:=xlDatabase, SourceData:="Data2")
Next pt
End Sub
*
符号来输入您的源数据,然后就可以开始了。Sub Change_Pivot_Source()
Dim pt As PivotTable
Dim ws As Worksheet
For Each ws In ActiveWorkbook.Worksheets
For Each pt In ws.PivotTables
pt.ChangePivotCache ActiveWorkbook.PivotCaches.Create _
(SourceType:=xlDatabase, SourceData:="*****")
Next pt
Next ws
End Sub
PivotTable.SourceData
属性,该属性通过 ChangePivotCache
方法进行设置。PivotCache
,请调用 ActiveWorkbook.PivotCaches.Create
SourceType
和一个 Range
作为 SourceData
。RefreshTable
应用更改。Sub AdjustPivotDataRange()
Dim pt As PivotTable, pc As PivotCache
Dim dataSheet As Worksheet, ws As Worksheet
Dim startPoint As Range, dataSource As Range, newRange As String
' get worksheet with data
Set dataSheet = ThisWorkbook.Worksheets("Sheet1")
' Dynamically Retrieve Range Address of Data
Set startPoint = dataSheet.Range("A1")
Set dataSource = dataSheet.Range(startPoint, startPoint.SpecialCells(xlLastCell))
newRange = dataSheet.Name & "!" & dataSource.Address(ReferenceStyle:=xlR1C1)
' create new PivotCache
Set pc = ActiveWorkbook.PivotCaches.Create( _
SourceType:=xlDatabase, _
SourceData:=newRange)
' loop through all tables in all sheets
For Each ws In ActiveWorkbook.Worksheets
For Each pt In ws.PivotTables
' update pivot source and refresh
pt.ChangePivotCache pc
pt.RefreshTable
Next pt
Next ws
End Sub
"Sheet1"
替换为您的数据源所在的位置。只需将原始数据转换成表格,一切问题都将得到解决。