2016-12-28 143 views
1

如果我編寫VBA以自動在Excel中過濾數據透視表,則似乎必須指定每條記錄爲可見= True或可見= false。沒有辦法只指定我想要檢查的內容嗎?編寫VBA以過濾Excel中的數據透視表項目

例如:

With ActiveSheet.PivotTables("PivotTable1").PivotFields("COB_TITLE") 

     .PivotItems("CMD GRP").Visible = True 
     .PivotItems("G1").Visible = True 
     .PivotItems("G2").Visible = True 


    End With 

,而不是

With ActiveSheet.PivotTables("PivotTable1").PivotFields("COB_TITLE") 

     .PivotItems("CMD GRP").Visible = True 
     .PivotItems("G1").Visible = True 
     .PivotItems("G2").Visible = True 
     .PivotItems("G3/G5/G3 FIRES/REE/G7/HAST/G9").Visible = False 
     .PivotItems("G4").Visible = False 
     .PivotItems("G6").Visible = False 
     .PivotItems("G8").Visible = False 
    .PivotItems("DIV ENG").Visible = False 

    End With 

我確信我已經記錄在同一時間我只選擇了那件事情發生的宏。

  • 續..

所以我寫了這個字符串function VisibleList(strSLIDE)產生像這樣的列表:

.PivotItems("HHBN").Visible = False 
.PivotItems("CMD GRP").Visible = False 
.PivotItems("G1").Visible = True 
.PivotItems("G2").Visible = True 
.PivotItems("G3/G5/G3 FIRES/REE/G7/HAST/G9").Visible = True 
.PivotItems("DIV ARTY").Visible = False 
.PivotItems("G3 FIRES").Visible = False 
.PivotItems("G4").Visible = True 

我希望我可以嵌入這樣的:

strPivotItems = VisibleList("DIV STAFF") 

    With ActiveSheet.PivotTables("PivotTable1").PivotFields("COB_TITLE") 
     strPivotItems 
    End With 

我假設我可以這樣做,就像我嵌入SQL一樣。有沒有辦法爲VBA生成這個?

+0

一切。 https://www.thespreadsheetguru.com/blog/2014/9/27/vba-guide-excel-pivot-tables –

+0

發現。好的,現在我知道我正走在正確的軌道上。 – monty327

+0

@ monty327你找到了解決你的問題的方法嗎?或者你需要幫助? –

回答

0

不知道這是你的意思,但在下面給出了一槍代碼:你需要了解數據透視表和VBA(或非常接近)

Option Explicit 

Sub FilterPivotItems() 

Dim PvtTbl As PivotTable 
Dim PvtFld As PivotField 
Dim PvtItm As PivotItem 

' set Pivot Table 
Set PvtTbl = ActiveSheet.PivotTables("PivotTable1") 

' set Pivot Field to "COB_TITLE" 
Set PvtFld = PvtTbl.PivotFields("COB_TITLE") 

' loop through all Pivot Items in "COB_TITLE" Pivot Field 
For Each PvtItm In PvtFld.PivotItems 

    ' check what is the Pivot item Name 
    Select Case PvtItm.Name 
     Case "CMD GRP", "G1", "G2" ' <-- visible Filter Items list 
      PvtItm.Visible = True 

     Case Else 
      PvtItm.Visible = False 

    End Select 
Next PvtItm 

End Sub 
相關問題