【发布时间】:2017-10-01 03:00:21
【问题描述】:
有没有办法在每次更改数据透视表的给定过滤器时自动对数据透视表进行排序?
我想按第三列中的降序对数据透视表进行排序。此表的过滤器每月更新一次。因此,我不想每次都手动对其进行排序。
这是我手动操作时的 vba 代码。
Sub example()
'
' example Macro
'
Range("BO12").Select
'change period filter from "3" to "4"
With ActiveSheet.PivotTables("PivotTable2").PivotFields("Period")
.PivotItems("3").Visible = True
.PivotItems("4").Visible = False
End With
'sort the table in descending order by the values in the 3rd column
ActiveSheet.PivotTables("PivotTable2").PivotFields("Channel").AutoSort _
xlDescending, "Sum of Shares", ActiveSheet.PivotTables("PivotTable2"). _
PivotColumnAxis.PivotLines(3), 1
End Sub
有没有办法自动化这个?
相关表格的图片:
我尝试过的都无济于事。
Private Sub SortTables(ByVal Target As Range)
'
' SortTables Macro
'
'
Range("D12").Select
If Target.Name = "PivotTable3" Then
ActiveSheet.PivotTables("PivotTable3").PivotFields("Channel").AutoSort _
xlDescending, "Sum of Shares", ActiveSheet.PivotTables("PivotTable3"). _
PivotColumnAxis.PivotLines(3), 1
End If
End Sub
【问题讨论】:
-
您想让数据透视表按照第 3 列排序?第三列
PivotFields.Name是什么?是"Channel"吗?你想按"Channel"值对它们进行排序吗? -
第三列包含最近一个月的数据。 “期间”=“4”,即四月。见图片。
-
好的,所以您想根据
"Period" = "4"以降序对"Sum of Shares"进行排序?输出应该是7.11 , 1.18, 0.77, 0.32, 0.02? -
正确! "Period" = "4" 的数据在第 3 列。
标签: vba excel sorting pivot-table