将枢轴值移动到行

时间:2019-03-18 02:54:02

标签: excel vba pivot-table

我正在使用数据透视表汇总表中的列。不使用SUM公式的原因是因为我正在使用切片器和时间轴来使图表与过滤器更加互动(使用枢轴图表)。

在创建透视表期间,各列(即第1列,第2列,第n列)进入ROWS字段,我需要将它们逐一拖到VALUES字段中。

我尝试记录宏,但是列标题可能会更改,并且如果不指定确切名称,代码将无法工作。

是否有VBA代码可以自动执行此操作?

1 个答案:

答案 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