在 vba 中将多个值设置为 pivot table 过滤条件

Set multiple values as pivot table filter criteria in vba

我正在尝试使用 VBA 宏自动更新具有特定过滤器值的不同工作簿中的数据透视表 table。我有兴趣查看大约 10 个值,但首先我希望能够同时查看两个值。我正在使用变量动态引用要根据月份和周数打开的工作簿。有问题的行是最底部的行。

Dim varMonth As String
Dim varWeek As String
Worksheets("Data").Activate
varMonth = Range("B2").Value
varWeek = Range("B3").Value
Workbooks.Open("filepath" & varMonth & "/" & varMonth & " WK " & varWeek & " D1 Reconciliation.xlsx").Sheets("Pivot").Activate
Sheets("Pivot").PivotTables("D1Pivot").PivotFields("Marketing Referral Type").ClearAllFilters
Sheets("Pivot").PivotTables("D1Pivot").PivotFields("Marketing Referral Type").CurrentPage = "Digital"
Sheets("Pivot").PivotTables("D1Pivot").PivotFields("Appointment Status").ClearAllFilters
Sheets("Pivot").PivotTables("D1Pivot").PivotFields("Appointment Status").CurrentPage = "Showed/Day1" And "No Show"

我还在适应 VBA 的能力,所以我想知道这是否是一个我还没有看到的简单修复。

尝试遍历数据透视字段中的每个数据透视项,然后检查名称是“Showed/Day1”还是“No Show”。如果不是,请将数据透视项的 Visible 属性 设置为 False 。 . .

With Sheets("Pivot").PivotTables("D1Pivot").PivotFields("Appointment Status")
    .ClearAllFilters
    Dim pi As PivotItem
    For Each pi In .PivotItems
        If pi.Name <> "Showed/Day1" And pi.Name <> "No Show" Then
            pi.Visible = False
        End If
    Next pi
End With

但是,您的代码可以重写如下...

With Worksheets("Data")

    Dim varMonth As String
    varMonth = .Range("B2").Value
    
    Dim varWeek As String
    varWeek = .Range("B3").Value
    
End With

Workbooks.Open "filepath" & varMonth & "/" & varMonth & " WK " & varWeek & " D1 Reconciliation.xlsx"

With Sheets("Pivot").PivotTables("D1Pivot")

    With .PivotFields("Marketing Referral Type")
        .ClearAllFilters
        .CurrentPage = "Digital"
    End With
    
    With .PivotFields("Appointment Status")
        .ClearAllFilters
        Dim pi As PivotItem
        For Each pi In .PivotItems
            If pi.Name <> "Showed/Day1" And pi.Name <> "No Show" Then
                pi.Visible = False
            End If
        Next pi
    End With
    
End With