【问题标题】:Pivot table filtering based on a combo box基于组合框的数据透视表过滤
【发布时间】:2019-08-16 20:24:22
【问题描述】:

我需要您在编码方面的帮助,因为我不知道如何实现它。 我想链接一个组合框来影响数据透视表的过滤,但我发现的编码无法解决我想要实现的目标 - 即

1) 当数据透视框和组合框位于两个不同的工作表上时,如何链接它们? - 组合框在 Worksheet1 中,枢轴在 Worksheet2 中。

2) 当组合框(基于地理位置)等效为“WW”时,如何让枢轴将过滤器刷新为“全部”?

我找到的以下代码是一个起始基础,但最终出现了两个错误。


With ActiveSheet.Shapes(Application.Caller).ControlFormat
    ActiveSheet.PivotTables("Pivot_table1").PivotTableWizard SourceType:=xlDatabase, SourceData:=
    .List (.Value)
End With

End Sub

错误如下:a)第一行的语法错误(我将宏链接到组合框)和 b)预期的编译错误:activesheet 上的表达式。

感谢任何有关如何使其工作的提示 - 非常感谢。

【问题讨论】:

  • 你不能用切片机吗?听起来切片机就是您正在寻找的东西。它是一个或多个数据透视表的“外部”控件。右键单击并插入切片器。
  • @Andreas,我确实有用于其他过滤的切片器,但是,此处用于地理命名的主要控件是一个组合框,而不仅仅是数据透视表。因此,我尝试根据组合框而不是相反来更新枢轴过滤的原因。

标签: excel vba


【解决方案1】:

我最终找到了一个可行的替代解决方案 - 感谢大家的观看和支持。

Sub changeFilters()
Dim pt As PivotTable
Dim pf As PivotField
Dim pi As PivotItem
Dim wsChart As Worksheet
Dim wsPivot As Worksheet
Dim SelGeo  As Variant

'turn on automatic update / calculation in the Pivot Table

Set wsChart = ThisWorkbook.Sheets("Graph Data")
Set wsPivot = ThisWorkbook.Sheets("PCW_pivot")
Set pt = ThisWorkbook.Sheets("PCW_pivot").PivotTables("Pivot_table1")
Set SelGeo = ThisWorkbook.Sheets("Graph Data").Range("SelGeo")

pt.ManualUpdate = True
Application.ScreenUpdating = False

ThisWorkbook.Sheets("PCW_pivot").PivotTables("Pivot_table1").ClearAllFilters

If ThisWorkbook.Sheets("Graph Data").Range("SelGeo") = WW Then
Exit Sub
End If

For Each pi In pt.PivotFields("Geo").PivotItems
Select Case pi.Name
    Case [SelGeo]
        pi.Visible = True
        Case Else
        pi.Visible = False
    End Select
Next pi


'turn on automatic update / calculation in the Pivot Table

pt.ManualUpdate = False
Application.ScreenUpdating = True
End Sub

【讨论】:

    猜你喜欢
    • 2015-08-26
    • 2018-09-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-20
    • 2011-05-05
    • 2013-10-10
    • 2018-08-12
    相关资源
    最近更新 更多