【问题标题】:Pivot/Table filter activated through link from other table's cell value通过链接从其他表格的单元格值激活的数据透视表/表格过滤器
【发布时间】:2016-12-17 13:50:25
【问题描述】:

我有一个需要处理的项目列表,其中一些项目需要更深入的分析。基本上我有两张桌子。第一个显示生产结果,通过过滤列 U,我得到一个异常值列表,如下图所示。

Table of outliers

然后需要进一步分析 S 列中显示的值,并为其设置数据透视图。在此图表中,我过滤了特定的 VRTY 编号以仔细查看。

Pivot Chart for analysis

两个工作表都包含在同一个工作簿中,我基本上是在打开两个窗口的情况下工作的,但要浏览列表,我必须在数据透视过滤器中手动输入每个 VRTY 值。

数据透视图的表和异常值表不相关,数据来源不同。

在离群值表 (VRTY) 的 S 列中,理想情况下,我会将值转换为链接,在单击时自动将数据透视过滤器设置为此值。

我是 VBA 的新手,但根据我所做的研究,这将是唯一的选择 - 我只是没有得到如何实现这个特定功能的说明。

我们将不胜感激说明/建议。

【问题讨论】:

    标签: excel vba filtering pivot-table pivot-chart


    【解决方案1】:

    Sambo:确保PivotChart底层PivotTable中“Number”字段的方向是PageField,然后将以下代码放入Outliers PivotTable所在工作表对应的Sheet代码模块中:

    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    
        Dim pf          As PivotField
        Dim pf_Slave    As PivotField
    
        Set pf = ActiveSheet.PivotTables("PivotTable1").PivotFields("VRTY")
        Set pf_Slave = ActiveSheet.PivotTables("PivotTable2").PivotFields("number")
    
    
        If Not Intersect(Target, pf.DataRange) Is Nothing Then
            On Error Resume Next
            pf_Slave.CurrentPage = CStr(Target)
            On Error GoTo 0
        End If
    
    End Sub
    

    根据需要更改“数据透视表1”和“数据透视表2”。

    “工作表代码模块”是指这种类型的东西:

    【讨论】:

    • 太棒了!我不得不在代码中翻找,因为 pf 是一个表格而不是一个数据透视字段,但它就像一个魅力。这么简单的代码! Private Sub Worksheet_SelectionChange(ByVal Target As Range) Dim pf As ListColumn Dim pf_Slave As PivotField Set pf = Sheet1.ListObjects("Check").ListColumns("VRTY") Set pf_Slave = Sheet4.PivotTables("PivotTable2").PivotFields("number") If Not Intersect(Target, pf.Range) Is Nothing Then On Error Resume Next pf_Slave.CurrentPage = CStr(Target) On Error GoTo 0 End If End Sub
    • 酷...很高兴能帮上忙
    猜你喜欢
    • 2013-05-16
    • 2017-08-28
    • 1970-01-01
    • 2017-07-04
    • 2013-09-17
    • 2021-12-19
    • 2017-07-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多