我正在尝试使用以下代码对所有数据透视表进行排序:
Sub sortpivots()
ActiveWorkbook.PivotTables().PivotFields("name").AutoSort _
xlAscending, "Min of start", ActiveSheet.PivotTables(). _
PivotColumnAxis.PivotLines(1)
End Sub
我制作了一个宏但它又长而丑,必须有一种方法可以同时定位所有数据透视表。我哪里错了?
答案 0 :(得分:1)
您可以使用For Each循环,第一个循环遍历Activeworkbook的工作表,第二个循环遍历每个工作表中的数据透视表:
Sub sortpivots()
Dim ws As Excel.Worksheet
Dim pvt As Excel.PivotTable
For Each ws In ActiveWorkbook.Worksheets
For Each pvt In ws.PivotTables
ActiveWorkbook.PivotTables().PivotFields("name").AutoSort _
xlAscending, "Min of start", ActiveSheet.PivotTables(). _
PivotColumnAxis.PivotLines(1)
Next pvt
Next ws
End Sub
答案 1 :(得分:1)
我没有足够的声誉对@Doug Glancy的代码发表评论,并且我很清楚这是一个老帖子,但发现了一个小小的疏忽
For Each pvt In ws.PivotTables
ActiveWorkbook.PivotTables().PivotFields("name").AutoSort _
xlAscending, "Min of start", ActiveSheet.PivotTables(). _
PivotColumnAxis.PivotLines(1)
Next pvt
由于遍历数据透视表ActiveWorkbook.PivotTables()
和ActiveSheet.PivotTables()
应该使用For/Next
循环变量
For Each pvt In ws.PivotTables
pvt.PivotFields("name").AutoSort _
xlAscending, "Min of start", pvt. _
PivotColumnAxis.PivotLines(1)
Next pvt
否则您可能会操纵错误的数据透视表。