Макрос Excel - L oop через 2 сводные таблицы - PullRequest
0 голосов
/ 30 января 2020

Я довольно новичок в макросах Excel и пытаюсь что-то сделать, но ... я полностью застрял. Я надеюсь, что некоторые из вас могли бы помочь мне.

Я постараюсь объяснить это как можно яснее. Извините, это будет длинным.

У меня 3 листа:

  1. Зависимости (зависимости между отделами, связанные с их деятельностью, включая критичность деятельности): Dept - Process Activity - Targeted Dept - Targeted Process - Targeted Activity - Criticality

  2. Виды деятельности (действия, связанные с каждым отделом): Отдел - Процесс - Операция - Критичность

  3. Лист с 2 сводными таблицами. Первое происходит от зависимостей, а второе от деятельности. Оба имеют фильтр в отделе.

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

Допустим, я отфильтровал сводную область зависимостей на .. Банковском отделе, который должен выглядеть следующим образом:

-Зависимости сводных данных

Отдел: Банковское дело

Процесс: контроли
Активность: ежедневные контроли
Целевой отдел: управление
Целевой процесс: управление данными
целевое действие: отчетность

Процесс: контроли
Активность: ежедневно Элементы управления
Целевой отдел: IT
Целевой процесс: Поддержка производства
Целевое действие: Инструменты отладки

В My Activity Pivot должны отображаться целевые отделы в сводных зависимостях

-Pivot Activity

Dept1: Управление
Dept2: IT

Я создал макрос, который правильно фильтрует зависимости. Но в моем l oop должна быть какая-то неправильная причина, когда она переходит к моему вложенному l oop, вторая сводная таблица не фильтрует отдел по значению Targeted Department.

это большой макрос, который делает другие вещи, так что вот только эта часть.

Надеюсь, кто-нибудь сможет мне помочь ...

Макрос:

Sub Filter()

    Dim pi10 As PivotItem
    Dim pf10 As PivotField
    Dim pt10 As PivotTable

    Dim pi11 As PivotItem
    Dim pf11 As PivotField
    Dim pt11 As PivotTable

    Dim pi12 As PivotItem
    Dim pf12 As PivotField
    Dim pt12 As PivotTable


    Sheets("Criticality on Dependencies").Select
    Set pt10 = ActiveSheet.PivotTables("PivotTable1")
    Set pf10 = pt10.PivotFields("Department")
    Set pt12 = ActiveSheet.PivotTables("PivotTable2")
    Set pf12 = pt12.PivotFields("Department")

        For Each pi10 In pf10.PivotItems
            pi10.Visible = True
        Next pi10

        For Each pi12 In pf12.PivotItems
            pi12.Visible = True
        Next pi12

        For Each pi10 In pf10.PivotItems
            If pi10.Value = cell Then
                pi10.Visible = True

                Set pf11 = pt10.PivotFields("TargetedDepartment")

                For Each pi11 In pf11.PivotItems
                For Each pi12 In pf12.PivotItems
                    If pi12.Value = pi11.Value Then
                        pi12.Visible = True
                    ElseIf pi12.Value = "(blank)" Then
                    Else
                        pi12.Visible = False
                    End If
                Next pi12
                Next pi11

            ElseIf pi10.Value = "(blank)" Then
            Else
                pi10.Visible = False
            End If
        Next pi10

End sub
...