使用VBA Excel对工作簿中的所有数据透视表进行sorting
我正在尝试使用下面的代码对所有透视表进行sorting:
Sub sortpivots() ActiveWorkbook.PivotTables().PivotFields("name").AutoSort _ xlAscending, "Min of start", ActiveSheet.PivotTables(). _ PivotColumnAxis.PivotLines(1) End Sub
我已经做了一个macros,但它是漫长而丑陋的,必须有一种方法来一次性定位所有的数据透视表。 我哪里错了?
您可以使用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
我没有足够的声望评论@Doug Glancy的代码,并且很清楚这是一个旧post,但注意到一个小小的疏漏
For Each pvt In ws.PivotTables ActiveWorkbook.PivotTables().PivotFields("name").AutoSort _ xlAscending, "Min of start", ActiveSheet.PivotTables(). _ PivotColumnAxis.PivotLines(1) Next pvt
由于循环透视Pivot表ActiveWorkbook.PivotTables()
和ActiveSheet.PivotTables()
应该使用For/Next
循环variables
For Each pvt In ws.PivotTables pvt.PivotFields("name").AutoSort _ xlAscending, "Min of start", pvt. _ PivotColumnAxis.PivotLines(1) Next pvt
否则,你冒险操纵错误的数据透视表。