繁体   English   中英

Excel VBA 数据透视表过滤器

Excel VBA Pivot Table Filter

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

我正在尝试为 Microsoft Excel 编写 VBA 代码,以从数据透视表中筛选出许多项目(例如 100 个项目中的 3 个项目)。 到目前为止,我一直在使用的方法是声明我不想为假的项目,例如:

.PivotItems("Item A").Visible = True
.PivotItems("Item B").Visible = True
.PivotItems("Item C").Visible = False
.PivotItems("Item D").Visible = False
.PivotItems("Item E").Visible = False

但是,这在将来会变得乏味,因为表中可能添加了更多项目,这意味着每次添加新项目时我都需要编辑代码。

有没有办法在不使用的情况下过滤掉两个或多个项目

.Visible=false 

pf.CurrentPage = "Item A" + "Item B" 
2 个回复

您必须调整数据透视表和字段名称,但这适用于我的测试:

Sub filter_pivot()
    Dim i As Integer
    ActiveSheet.PivotTables("PivotTable1").ClearAllFilters
    With ActiveSheet.PivotTables("PivotTable1").PivotFields("CLCL")
        For i = 1 To .PivotItems.Count
            Debug.Print .PivotItems(i)
            Select Case .PivotItems(i).Name
                Case Is = "Item C"
                    .PivotItems(i).Visible = False
                Case Is = "Item D"
                    .PivotItems(i).Visible = False
                Case Is = "Item E"
                    .PivotItems(i).Visible = False
            End Select
        Next i
    End With
End Sub

我们仍在使用.Visible但您添加多少新项目并不重要。

您可以使用一组项目:

Dim arr() As Variant

' Array of items to be kept visible (or hidden depending on your code)
arr = Array("Item 1", "Item 2", "Item 2")

For Each itm In pt.PivotFields("Value").PivotItems
    If Not IsError(Application.Match(itm.Caption, arr, 0)) Then
        itm.Visible = True
    Else
        itm.Visible = False
    End If
Next
1 VBA数据透视表过滤器

因此,我的VBA出现了一些问题,并切换了数据透视表过滤器。 这是我的代码: 我尝试使用“ 1”,1、1.0,但没有任何运气。 我得到的错误是: “应用程序定义或对象定义的错误” 任何帮助表示赞赏。 ...

2 如何从VBA代码或公式中访问Excel数据透视表中的选定报表过滤器值?

我有一个带有报告过滤器字段的数据透视表。 我需要根据用户在报表过滤器字段中选择的值进行一些操作。 如果用户选择单个值(或选择All ) - 获取该值没有问题。 在示例视频中,它是单元格B1,但是如果选择了多个值,则此字段仅显示Multiple selected 。 我在哪里可以获 ...

3 Excel 360 VBA 更改数据透视表过滤器

我正在尝试使用 VBA 更改使用“将此数据添加到数据模型”功能设置的数据透视表上的过滤器,该功能将读取包含要过滤的项目的列表框的选择。 我首先录制了一个宏,看看会发生什么,然后得到了这个: 我的问题是动态设置可以包含任意数量项目的数组。 我需要做类似下面的事情,但每次都附加到数组中,这不会: ...

2020-03-13 01:51:20 1 58   excel/ vba
4 数据透视表过滤器没有数据 VBA

我有 VBA 代码,它将数据透视表中的过滤数据放入工作表中的单独选项卡中。 一切正常,直到它无法通过首字母过滤数据,因为没有任何数据。 我在下面尝试了一个 if 语句,但这不起作用 - 抓我的头('过滤数据透视表)。 ...

2020-01-31 15:42:44 0 19   excel/ vba
5 使用VBA更新数据透视表过滤器

我试图根据具有不同数据源的不同工作表上的另一个数据透视表的过滤器来过滤数据透视表。 我有两张(主要和尺寸实际 - 样式),并希望按“样式”过滤。 主页是我想要选择要过滤的样式的位置,从那里我想让其他工作表更新过滤所选择的样式(如果使用按钮进行过滤会有帮助)。 我已经更改了一些代码来解释 ...

6 数据透视表中单个过滤器的VBA代码

我是VBA的新手...我正在尝试创建一个过滤器 在交易类型下,我要过滤出“付款” 下面是我的代码,但是当它到达pf.Current页面=“ Payment”时它出错了。 感谢您的任何反馈 ...

7 VBA宏数据透视表过滤器错误

在电子表格中,我有可变数据; 但是,我有一组特定的属性,希望当它们出现在该周的数据运行中时被过滤。 如果没有出现,我希望数据透视表过滤器跳过它并继续下一个。 不幸的是,当我尝试运行宏时,我不断收到调试错误。 有人可以帮忙吗? IE如果变量[raw]数据中没有“ 1G1N13S2”, ...

8 使用VBA更改数据透视表过滤器

我有一个数据透视表,其中包含“CoB Date”字段,如图所示。 我正在尝试创建一个宏,根据用户输入自动更改日期。 我写了以下宏代码。 但它显示错误: 无法获取数据透视表类的PivotFields属性 谁能帮我这个? 注意:假设日期格式不是问题 码: ...

9 VBA数据透视表基于页面过滤器的可见项

我只想在下面返回实际可见的枢轴项目-如果运行此代码,我将获得所有field3枢轴项目,而不仅仅是基于页面过滤器显示的枢轴项目。 如果我将过滤器应用于field3枢轴字段,则pt.visibleitems可以工作,但我想按照以下示例对field1和field2进行过滤。 谢谢! ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2021 STACKOOM.COM