Применение нескольких фильтров сводной таблицы из таблицы - PullRequest
0 голосов
/ 15 октября 2018

Я пытаюсь отфильтровать сводную таблицу на основе списка значений в таблице.

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и у и соответствующие значения фильтра и таблицы.Те, которые выполняются, как ожидалось.

Кто-нибудь знает, как я могу это сделать?

...