2017-02-20 13 views
3

Я пытаюсь пропустить все сводные таблицы в листе и удалить все поля значений в них, которые имеют одно и то же имя: «Total Net Spend» и «% Split» (см. Рисунок для Справка).Loop Through Pivot Tables and Remove Same Values ​​

enter image description here

Я пытаюсь следующий код, но он будет работать только на первой оси и не будет цикл через все из них. Как отредактировать код, чтобы он удалял столбцы «Total Net Spend» и «% Split» на всех сводных таблицах на листе?

Sub Loop_Pivots() 

Dim PT As PivotTable, PTField As PivotField 

Set PT = Sheets("Sheet1").PivotTables("Pivot1") 
With PT 
    .ManualUpdate = True 
    For Each PTField In .DataFields 
     PTField.Orientation = xlHidden 
    Next PTField 
    .ManualUpdate = False 
End With 
Set PT = Nothing 

End Sub 

ответ

0

Для петли через PivotTables попробовать другой foreach цикл вроде этого

Sub Loop_Pivots() 

    Dim PT As PivotTable, PTField As PivotField 
    For Each PT In Sheets("Sheet1").PivotTables 
     With PT 
      .ManualUpdate = True 
      For Each PTField In .DataFields 
       PTField.Orientation = xlHidden 
      Next PTField 
      .ManualUpdate = False 
     End With 
    Next PT 
    Set PT = Nothing 
End Sub 
+1

Просто пытался, но ошибка выскакивает говоря: не удалось установить свойство ориентации класса PivotField ... – Andrea

0

Попробуйте код ниже:

Option Explicit 

Sub Loop_Pivots() 

Dim PT   As PivotTable 
Dim PTField  As PivotField 

For Each PT In Sheets("Sheet1").PivotTables 

    With PT 
     .ManualUpdate = True 
     For Each PTField In .PivotFields '<-- loop through all pivot fields 
      Select Case PTField.Name 
       Case "Total Net Spend", "% Split" '<-- if Field Name equals on of the 2 in this case 
        PTField.Orientation = xlHidden 
      End Select 
     Next PTField 
     .ManualUpdate = False 
    End With 
    Set PT = Nothing 
Next PT 

End Sub 
+0

Спасибо за помощь, но ничего не происходит с этим кодом ... С исходным кодом я смог избавиться от " Total Net Spend "и"% Split "на первом шаге, но он не будет прокручивать оставшиеся опорные точки ... – Andrea

+0

@ Андреа странная, работала для меня. Это возвращает ошибку? –

+0

Нет ошибок. Он просто ничего не сделает ... – Andrea