我尝试创建一个宏来遍历工作簿中的所有工作表,确定是否存在数据透视表,刷新数据透视表以及对特定列进行排序。有许多工作表不会在特定列上排序,因此我已包含代码以排除它们。
似乎只是对ActiveSheet
上的数据透视表进行排序。我认为这是因为ActiveSheet.PivotTable(1)
篇,但如果我把这篇文章拿出来,代码将无法运行。我对VBA很新,所以我不知道接下来要做什么。任何帮助将不胜感激。
Sub RefreshPivotCache()
Dim ws As Worksheet
Dim PT As PivotTable
For Each ws In ActiveWorkbook.Worksheets '<~~ Loop all worksheets in workbook
If ws.PivotTables.Count > 0 Then
If (ws.Name <> "L&D TE Summary") And (ws.Name <> "L&D BCD Summary") And (ws.Name <> "HR Ops TE") And (ws.Name <> "HR Ops BCD") And (ws.Name <> "Strat Delivery Summary") _
And (ws.Name <> "Strat Delivery TE") And (ws.Name <> "Strat Delivery BCD") Then
For Each PT In ws.PivotTables '<~~ Loop all pivot tables in worksheet
PT.PivotCache.Refresh
ActiveSheet.PivotTables(1).PivotFields("Associate Name").AutoSort _
xlDescending, " ", ActiveSheet.PivotTables(1).PivotColumnAxis. _
PivotLines(1), 1
Next PT
End If
End If
Next ws
End Sub
答案 0 :(得分:1)
您只需更改Activesheet
上的数据透视表,但永远不会在循环中激活ws
。所以改变
ActiveSheet.PivotTables(1).PivotFields("Associate Name").AutoSort _
xlDescending, " ", ActiveSheet.PivotTables(1).PivotColumnAxis. _
PivotLines(1), 1
到
ws.PivotTables(1).PivotFields("Associate Name").AutoSort _
xlDescending, " ", ws.PivotTables(1).PivotColumnAxis. _
PivotLines(1), 1