如何在不清除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
只要字段名不变,对我来说就可以了。