【发布时间】:2015-11-15 19:49:44
【问题描述】:
我正在开发一个具有 4 个级联组合框的仪表板,其中一个过滤下一个过滤下一个。它们连接到具有命名范围的链接单元格。
在另一个工作表上,我的数据透视表与我的组合框在同一页面上连接到数据透视图。
长话短说,因为一个组合框更改了我的数据透视表上的过滤器,从而更改了数据透视图。
我有两种方法,一种方法执行一半的时间,但它们都以相同的方式结束。我可以更改过滤器,但数据透视表不会显示值。
我已将其拼凑起来并进行了修改以满足我的需要。
Sub changeFilters()
Dim pt As PivotTable
Dim pf As PivotField
Dim pi As PivotItem
Dim wsChart As Worksheet
Dim wsPivot As Worksheet
Dim selCat As Variant
Dim selSub As Variant
Dim selLoc As Variant
Dim selCust As Variant
Set wsChart = ThisWorkbook.Sheets("CHART")
Set wsPivot = ThisWorkbook.Sheets("Pivot")
Set pt = ThisWorkbook.Sheets("Pivot").PivotTables("PT1")
Set selCat = ThisWorkbook.Sheets("CHART").Range("selCat")
Set selSub = ThisWorkbook.Sheets("CHART").Range("selSub")
Set selLoc = ThisWorkbook.Sheets("CHART").Range("selLoc")
Set selCust = ThisWorkbook.Sheets("CHART").Range("selCust")
pt.ManualUpdate = True
Application.ScreenUpdating = False
For Each pi In pt.PivotFields("CATEGORY").PivotItems
Select Case pi.Name
Case [selCat]
pi.Visible = True
Case Else
pi.Visible = False
End Select
Next pi
For Each pi In pt.PivotFields("SUB-CATEGORY").PivotItems
Select Case pi.Name
Case [selSub]
pi.Visible = True
Case Else
pi.Visible = False
End Select
Next pi
For Each pi In pt.PivotFields("LOCATION").PivotItems
Select Case pi.Name
Case [selLoc]
pi.Visible = True
Case Else
pi.Visible = False
End Select
Next pi
For Each pi In pt.PivotFields("CUSTOMER").PivotItems
Select Case pi.Name
Case [selCust]
pi.Visible = True
Case Else
pi.Visible = False
End Select
Next pi
'turn on automatic update / calculation in the Pivot Table
pt.ManualUpdate = False
pt.PivotCache.Refresh
Application.ScreenUpdating = True
End Sub
【问题讨论】:
标签: vba excel filtering pivot-table