перемещение значений разворота в строки - PullRequest
0 голосов
/ 18 марта 2019

Я использую сводные таблицы для суммирования столбцов в моей таблице.Причина, по которой не используется формула SUM, заключается в том, что я использую срезы и временную шкалу, чтобы сделать диаграммы более интерактивными с фильтрами (используя сводные диаграммы).

Во время создания сводной таблицы столбцы (т. Е. Столбец 1, столбец)2, столбец n) перейдите в поле ROWS, и мне нужно будет перетаскивать их один за другим в поле VALUES.

Я пробовал записывать макросы, но заголовки столбцов могут измениться, и код не будет работать без указания точного имени.

Существует ли код VBA для автоматизации этого?

1 Ответ

0 голосов
/ 18 марта 2019

Размещение 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
...