Использование VBA для управления порядком элементов в списке полей сводной таблицы Excel - PullRequest
0 голосов
/ 09 января 2020

Я пытаюсь переместить поле данных значений в сводной таблице с 1-й позиции на 7-ю позицию. Мой текущий код берет последнюю запись в последней позиции списка полей значений и помещает ее в 7-й слот. Как я могу изменить свой код в соответствии со своими потребностями?

Список полей - Значения

Sub Macro7()

   With Sheets("Sheet1").PivotTables("PivotTable1").PivotFields("Sunday")
    .Orientation = xlDataField
    .Position = 7
End With

End Sub

Ответы [ 2 ]

0 голосов
/ 09 января 2020

Это то, что я придумал. Он удаляет все поля в разделе «Значения» списка полей. Затем он добавляет их обратно в правильном порядке. Немного медленно, но я не нашел лучшего способа сделать это.

 Worksheets("Sheet1").PivotTables("PivotTable1").DataPivotField.Orientation = xlHidden
    Worksheets("Sheet1").PivotTables("PivotTable1").AddDataField Worksheets("Sheet1").PivotTables( _
        "PivotTable1").PivotFields("Mon"), "Monday", xlCount
    Worksheets("Sheet1").PivotTables("PivotTable1").AddDataField Worksheets("Sheet1").PivotTables( _
        "PivotTable1").PivotFields("Tue"), "Tuesday", xlCount
    Worksheets("Sheet1").PivotTables("PivotTable1").AddDataField Worksheets("Sheet1").PivotTables( _
        "PivotTable1").PivotFields("Wed"), "Wednesday", xlCount
    Worksheets("Sheet1").PivotTables("PivotTable1").AddDataField Worksheets("Sheet1").PivotTables( _
        "PivotTable1").PivotFields("Thu"), "Thursday", xlCount
    Worksheets("Sheet1").PivotTables("PivotTable1").AddDataField Worksheets("Sheet1").PivotTables( _
        "PivotTable1").PivotFields("Fri"), "Friday", xlCount
    Worksheets("Sheet1").PivotTables("PivotTable1").AddDataField Worksheets("Sheet1").PivotTables( _
        "PivotTable1").PivotFields("Sat"), "Saturday", xlCount
    Worksheets("Sheet1").PivotTables("PivotTable1").AddDataField Worksheets("Sheet1").PivotTables( _
        "PivotTable1").PivotFields("Sun"), "Sunday", xlCount
    Worksheets("Sheet1").PivotTables("PivotTable1").AddDataField Worksheets("Sheet1").PivotTables( _
        "PivotTable1").PivotFields("Total Hours"), "Total", xlCount

0 голосов
/ 09 января 2020
This will do the trick,
just change the  .**Orientation** 

Sub Macro7()

   With Sheets("Sheet1").PivotTables("PivotTable1").PivotFields("Sunday")
    .Orientation = xlRowField
    .Position = 7
  End With

End Sub
...