【问题标题】:Filter a Pivot table based on values from a user defined range根据用户定义范围中的值过滤数据透视表
【发布时间】:2017-10-09 17:58:46
【问题描述】:

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

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

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”循环来应用过滤器。我已经与代码斗争了几个小时,但我不确定下一步该去哪里。

【问题讨论】:

    标签: vba excel pivot-table


    【解决方案1】:

    试试这个 Filter Excel pivot table using VBA

    您必须在您的范围内循环并让枢轴项目可见,其他所有内容都隐藏。

    【讨论】:

    • 我认为该帖子正是我所需要的,但老实说,我需要一个解释器来为我破译解决方案代码。我相信我当前的代码走在正确的道路上。我只是不确定如何在“rng”中循环......你能帮我完成最后一部分吗?
    • 我在想我的代码不起作用的原因是因为我让用户输入了一个范围。我现在需要循环遍历范围内的值。我可能完全不在基地,可能有更简单的方法来做到这一点。
    • 你需要一个变量来赋值。因此,您已将“rng”分配为变量。但是您需要设置 rng 的值。比如... rng = cells(n+1,1).value msdn.microsoft.com/en-us/library/office/ff196273.aspx
    猜你喜欢
    • 2018-03-11
    • 2016-11-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-10
    • 2015-04-18
    • 1970-01-01
    相关资源
    最近更新 更多