根据用户定义范围中的值过滤数据透视表

时间:2017-05-10 22:03:54

标签: excel vba excel-vba pivot-table

我正在尝试设置一个宏来根据用户定义的范围过滤数据透视表。

到目前为止,我所拥有的只是获得射程的提示。不幸的是,我不知道如何从范围中取值并将其应用于过滤器。谢谢你的帮助!

Sub foreachloop()

  Dim wbmodel As Excel.Workbook
Set wbmodel = ActiveWorkbook

Dim rng As Range
Dim Filter As String




  With wbmodel.Sheets("Pivot_model").PivotTables("Modelpivot")

    .ClearAllFilters

     Set rng = Application.InputBox("select Range", "Inputs", Type:=8)
     Filter = Application.InputBox("select Filter", "Inputs", Type:=8)

     MsgBox rng.Address
     MsgBox Filter


    For Each PivotItem In .PivotFields(Filter).PivotItems
    Select Case PivotItem.Name
        Case rng
            PivotItem.Visible = True
        Case Else
            PivotItem.Visible = False
        End Select
    Next PivotItem


  End With

  End Sub

确定。所以我做了一些(轻微的)更新。我制作了我的第一个“For Each”循环。现在,我知道我需要做一个类似的“for each”循环来应用过滤器。我一直在与代码争斗几个小时,我不确定下一步该去哪里。

1 个答案:

答案 0 :(得分:0)

试试这个 Filter Excel pivot table using VBA

您必须在您的范围内循环,并使枢轴项目可见,其他一切都隐藏。