![](/img/trans.png)
[英]Excel VBA or VSTO - How do you loop over Fields on a PivotTable?
[英]How to update pivot data without clearing PivotTable Fields on Excel VBA?
我當前的代碼似乎正在更新源數據范圍,但它正在清除字段和過濾器。 有什么辦法可以避免嗎?
sub update_pivot()
'change data range for pivot
Dim EndRow As Integer
Dim DataRange As Range
Dim NewRange As String
Dim Data_Sheet As Worksheet
Dim Pivot_Sheet As Worksheet
Set Data_Sheet = Workbooks(myfile).Worksheets("Consolidation")
Set Pivot_Sheet = Workbooks(myfile).Worksheets("Consolidation Pivot")
' find the last row in my data sheet
Data_Sheet.Select
EndRow = Cells(Rows.Count, "A").End(xlUp).Row
Set DataRange = Data_Sheet.Range("$A$1:$I" & EndRow)
NewRange = Data_Sheet.Name & "!" & DataRange.Address(ReferenceStyle:=xlR1C1)
Pivot_Sheet.Select
Pivot_Sheet.PivotTables("PivotTable6"). _
ChangePivotCache ActiveWorkbook. _
PivotCaches.Create(SourceType:=xlDatabase, SourceData:=NewRange)
' Ensure Pivot Table is Refreshed
Pivot_Sheet.PivotTables("PivotTable6").RefreshTable
End Sub
根據我的經驗,有必要添加首選字段和過濾器。 我相信設置存儲在 .PivotCache 中,其中更改緩存不會預先確定任何字段或過濾器。
我的解決方案是結束宏:
With Pivot_Sheet("PivotTable6")
.AddDataField .PivotFields("VariableName1")
.AddRowFields:=Array("VariableName2")
.RefreshTable
End with
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.