Фильтр сводной таблицы на основе другого фильтра сводной таблицы на другом листе с другим источником данных - PullRequest
0 голосов
/ 26 марта 2019

У меня есть две разные сводные таблицы на разных листах Excel с использованием разных источников данных.Они оба имеют столбец «Стиль», который можно отфильтровать.Когда я фильтрую стиль по одной сводной таблице, я хочу, чтобы другая сводная таблица автоматически (или с помощью кнопки) фильтровала те же выбранные стили.

В настоящее время я работаю над этим кодом, найденным на другом форуме.В разделе объектов в VBA у меня есть:

Sub ChangePivotFilter()
Dim WS As Excel.Worksheet
Dim aWB As Excel.Workbook
Dim myPivot As Excel.PivotTable
Dim myPivotField As Excel.PivotField
Set aWB = ActiveWorkbook
For Each WS In aWB.Worksheets
For Each myPivot In WS.PivotTables

Set myPivotField = Nothing

On Error Resume Next

Set myPivotField = myPivot.PivotFields(“Style”)

myPivotField.CurrentPage = “Style”

Next myPivot

Next WS

End Sub

В разделе модулей в VBA у меня есть:

Sub Button1_Click()

Dim s$

Application.EnableEvents = False

If Target.Name = "PivotTable1" Then
    With ThisWorkbook.PivotTables
        Let s = .Item("PivotTable1").PivotFields("Style").CurrentPage
        .Item("PivotTable2").PivotFields("Style").ClearAllFilters
        .Item("PivotTable2").PivotFields("Style").CurrentPage = s
    End With
Else
    With ThisWorkbook.PivotTables
        Let s = .Item("PivotTable2").PivotFields("Style").CurrentPage
        .Item("PivotTable1").PivotFields("Style").ClearAllFilters
        .Item("PivotTable1").PivotFields("Style").CurrentPage = s
    End With
End If

Application.EnableEvents = True

End Sub
...