我正在使用数据透视表汇总表中的列。不使用SUM公式的原因是因为我正在使用切片器和时间轴来使图表与过滤器更加互动(使用枢轴图表)。
在创建透视表期间,各列(即第1列,第2列,第n列)进入ROWS字段,我需要将它们逐一拖到VALUES字段中。
我尝试记录宏,但是列标题可能会更改,并且如果不指定确切名称,代码将无法工作。
是否有VBA代码可以自动执行此操作?
答案 0 :(得分:0)
PivotField
的位置由其Orientation
定义。
您需要两个简单的循环:
示例:
Private Sub PivotRowsToValues()
Dim pt As PivotTable
Dim pf As PivotField
For Each pt In ActiveSheet.PivotTables
' use each row field also as value field:
For Each pf In pt.RowFields
With pf
.Orientation = xlDataField ' xlColumnField
.Function = xlSum ' xlCount, ...
.NumberFormat = "General" ' "0.00", ...
End With
Next pf
' remove each row field
For Each pf In pt.RowFields
pf.Orientation = xlHidden
Next pf
Next pt
End Sub