Приведенный ниже VBA выбирает все и отменяет выбор 0 и пропускает пробелы в фильтре сводной таблицы, по существу обновляя сводную таблицу после ввода новых данных. Он работает правильно на одном листе, но у меня проблема в том, что сводная таблица 1 копируется на несколько листов, и я также хочу, чтобы это запускало это на их сводных таблицах.
Я пытался использовать массив безрезультатно и Я слишком ладья ie, чтобы понять, как заставить это продолжить тот же VBA на следующем листе / сводной таблице.
Option Explicit
Public Sub FilterOutZeroAndBlanks()
Dim pvt As PivotTable
Set pvt = ThisWorkbook.Worksheets("Cairns Table").PivotTables("PivotTable1")
Dim pvtField As PivotField
Set pvtField = pvt.PivotFields("Quantity")
Dim item As PivotItem
Dim counter As Long
Dim targetCounter As Long
With pvtField
For Each item In .PivotItems
If item.Visible Then counter = counter + 1
Next item
If .PivotItems("0").Visible And .PivotItems("(blank)").Visible Then
targetCounter = 2
ElseIf .PivotItems("0").Visible Or .PivotItems("(blank)").Visible Then
targetCounter = 1
End If
If Not targetCounter = counter Then
.PivotItems("0").Visible = False
.PivotItems("(blank)").Visible = False
End If
End With
End Sub