在 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
我正在尝试使用 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