2016-08-15 78 views
0

嗨我试图只显示5我的数据透视表中的特定项目。这张桌子由大约50个不同的物品组成,所以我想隐藏这五个物品的一切,但我正在挣扎。 我能得到的最好结果是删除所有内容,然后显示5个项目,但是因为无法删除所有内容,它将始终保留表格中的最后一项。 有人可以帮我解决这个问题吗?Excel 2003 VBA数据透视表显示具体项目

Dim pvtitem As PivotItem 

With ActiveSheet.PivotTables("PIV4").PivotFields("MSG TYPE") 
    .PivotItems("TEXT1").Visible = True 
    .PivotItems("TEXT2").Visible = True 
    .PivotItems("TEXT3").Visible = True 
    .PivotItems("TEXT4").Visible = True 
    .PivotItems("TEXT5").Visible = True 

For Each pvtitem In .PivotItems 
    If Not pvtitem.Name Like "TEXT1" Then pvtitem.Visible = False 
    ElseIf Not pvtitem.Name Like "TEXT2" Then pvtitem.Visible = False 
    ElseIf Not pvtitem.Name Like "TEXT3" Then pvtitem.Visible = False 
    ElseIf Not pvtitem.Name Like "TEXT4" Then pvtitem.Visible = False 
    ElseIf Not pvtitem.Name Like "TEXT5" Then pvtitem.Visible = False 
    Next pvtitem 
End With 

回答

0

尝试下面的代码(我添加了一个Select Case这样你就可以轻松地添加/修改|。透视字段“MSG类型”过滤条件

Option Explicit 

Sub Filter_PivotItems() 

Dim pvtTbl   As PivotTable 
Dim pvtitem   As PivotItem 
Dim pvtFld   As PivotField 

Set pvtTbl = ThisWorkbook.Sheets("PivotTable").PivotTables("PIV4") 

' set Pivot field variable to "MSG TYPE" 
Set pvtFld = pvtTbl.PivotFields("MSG TYPE") 

' lop through all Pivot Items in "MSG TYPE" Pivot Field 
For Each pvtitem In pvtFld.PivotItems 

    Select Case pvtitem.Name 
     Case "TEXT1", "TEXT2", "TEXT3", "TEXT4", "TEXT5" 
      pvtitem.Visible = True 

     Case Else 
      pvtitem.Visible = False 

    End Select 

Next pvtitem 

End Sub 
+0

谢谢工作一种享受。 – BradleyS