如何在不清除Excel VBA上的数据透视表字段的情况下更新数据透视?

如何在不清除Excel VBA上的数据透视表字段的情况下更新数据透视?,excel,vba,pivot-table,Excel,Vba,Pivot Table,我当前的代码似乎正在更新源数据范围,但它正在清除字段和筛选器。有什么办法可以避免吗 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

我当前的代码似乎正在更新源数据范围,但它正在清除字段和筛选器。有什么办法可以避免吗

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

只要字段名不变,对我来说就可以了。