Я пытаюсь отфильтровать сводную таблицу на основе списка значений в таблице.
Table2:
Selected Months Selected Years
9 2018
6
Доступные значения для фильтров в сводной таблице: 8,9,6 и 3 вэтот порядок.
Я пытаюсь использовать следующий код:
Sub ReportMonth()
Dim pt1 As PivotTable
Dim tbl As ListObject
Dim x As Long
Dim y As Long
Set tbl = Worksheets(6).ListObjects("Table2")
Set pt1 = Worksheets(5).PivotTables("PivotTable3")
'Clear the pivot cache and clear the pivot filter choices of old data.
'Enable multiple filter selections
pt1.PivotCache.MissingItemsLimit = xlMissingItemsNone
pt1.PivotCache.Refresh
pt1.PivotFields("Month").EnableMultiplePageItems = True
'y is the counter for Pivot filter items.
'x is the counter for rows in Table 2
With pt1.PivotFields("Month")
.ClearAllFilters
On Error Resume Next
For x = 1 To tbl.Range.Rows.Count
For y = 1 To .PivotItems.Count
If .PivotItems(y).Name = tbl.DataBodyRange(x, 1).Value Then _
.PivotItems(y).Visible = True Else _
.PivotItems(y).Visible = False
Next y
Next x
End With
End Sub
При использовании вышеуказанного кода имя фильтра "3" видно, но 3 даже нет в таблице.Я получаю тот же результат, если меняю .PivotItems(y).Name
на .PivotItems(y).Value
.Если я изменю значение с For y = 1
на For y =2
, имя фильтра «8» будет видимым и его нет в таблице.
Я помещаю окно сообщения в циклы for для возврата значений xи у и соответствующие значения фильтра и таблицы.Те, которые выполняются, как ожидалось.
Кто-нибудь знает, как я могу это сделать?