Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 基于组合框的透视表筛选_Excel_Vba - Fatal编程技术网

Excel 基于组合框的透视表筛选

Excel 基于组合框的透视表筛选,excel,vba,Excel,Vba,我需要你的帮助来编码,因为我不知道如何实现它。 我想链接一个组合框来影响数据透视表的过滤,但我发现的编码无法解决我想要实现的目标——即 1) 当枢轴和组合框位于两个不同的工作表上时,如何链接它们组合框位于工作表1中,轴位于工作表2中 2) 当组合框(基于地理位置)等效为“WW”时,如何让透视将过滤器刷新为“全部” 我发现下面的代码是一个起点,但最后有两个错误 With ActiveSheet.Shapes(Application.Caller).ControlFormat Active

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

1) 当枢轴和组合框位于两个不同的工作表上时,如何链接它们组合框位于工作表1中,轴位于工作表2中

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上的表达式


非常感谢您对如何使其工作的任何提示。

最后我找到了一个可行的替代解决方案-感谢大家的关注和支持

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

最后我找到了一个可行的替代方案——感谢大家的关注和支持

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

你不能用切片机吗?听起来你要找的是切片机。它是一个或多个透视表的“外部”控件。右键单击并插入切片器。@Andreas,我有用于其他筛选的切片器,但是,此处用于地理命名的lead控件是一个组合框,而不仅仅是透视表。因此,我尝试基于组合框而不是反向更新pivot筛选的原因。您不能使用切片器吗?听起来你要找的是切片机。它是一个或多个透视表的“外部”控件。右键单击并插入切片器。@Andreas,我有用于其他筛选的切片器,但是,此处用于地理命名的lead控件是一个组合框,而不仅仅是透视表。因此,我试图根据组合框而不是相反的组合框来更新透视过滤。