簡體   English   中英

Excel 2013 VBA數據透視表篩選器將更改,但不會顯示值

[英]Excel 2013 VBA Pivot Table Filters will change but values wont show

我正在使用具有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

我相信我已經解決了!,繼續下一期。 解決方案是添加

組合框之前的ThisWorkbook.Sheets("Pivot").PivotTables("PT1").ClearAllFilters

修改后的代碼如下。

Option Explicit
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")


Application.ScreenUpdating = False
pt.ManualUpdate = True

ThisWorkbook.Sheets("Pivot").PivotTables("PT1").ClearAllFilters



 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


'Removes pivot items from pivot table except those cases defined below      (by looping through)
 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
 Application.ScreenUpdating = True




End Sub

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM