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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/5.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_Pivot Table_Slicers_Excel Tables - Fatal编程技术网

如何在Excel中使用切片器链接表和透视表?

如何在Excel中使用切片器链接表和透视表?,excel,pivot-table,slicers,excel-tables,Excel,Pivot Table,Slicers,Excel Tables,嗯。我在Excel的一张工作表上有一个名为“ALL_INFO”的表,我在另一张工作表中创建了一个透视表,它的名称是“Pivot_INFO”。我想知道链接一个表和一个透视表的方法,透视表使用切片器过滤信息,并在两个表中反映出来 有人知道我怎么做吗 先谢谢你 为数据透视表创建一个切片器,为数据透视表创建一个切片器。确保PT切片器可见,并且表切片器隐藏在用户看不到的地方。然后将此代码放入与您的PT所在的工作表对应的工作表模块中: Option Explicit Private Sub Workshe

嗯。我在Excel的一张工作表上有一个名为“ALL_INFO”的表,我在另一张工作表中创建了一个透视表,它的名称是“Pivot_INFO”。我想知道链接一个表和一个透视表的方法,透视表使用切片器过滤信息,并在两个表中反映出来

有人知道我怎么做吗


先谢谢你

为数据透视表创建一个切片器,为数据透视表创建一个切片器。确保PT切片器可见,并且表切片器隐藏在用户看不到的地方。然后将此代码放入与您的PT所在的工作表对应的工作表模块中:

Option Explicit

Private Sub Worksheet_PivotTableUpdate(ByVal Target As PivotTable)
Dim sLastUndoStackItem As String
Dim sc_Pivot As SlicerCache
Dim sc_Table As SlicerCache
Dim si_Pivot As SlicerItem
Dim si_Table As SlicerItem

With Application
    .ScreenUpdating = False
    .Calculation = xlCalculationManual
End With

If Target.Name = "PivotTable1" Then '<= Change name as appropriate
    On Error Resume Next 'in case the undo stack has been wiped or doesn't exist
    sLastUndoStackItem = Application.CommandBars(14).FindControl(ID:=128).List(1) 'Standard Commandbar, undo stack
    'The above line doesn't seem to work in my version of O365 so we'll use the English language backup
    If sLastUndoStackItem = "" Then sLastUndoStackItem = Application.CommandBars("Standard").Controls("&Undo").List(1)
    On Error GoTo 0

    If sLastUndoStackItem = "Filter" Or sLastUndoStackItem = "Slicer Operation" Then

        Set sc_Pivot = ActiveWorkbook.SlicerCaches("Slicer_Data") '<= Change name as appropriate
        Set sc_Table = ActiveWorkbook.SlicerCaches("Slicer_Data1") '<= Change name as appropriate
        sc_Table.ClearAllFilters

        On Error Resume Next 'In case items differ between Table and PT
        For Each si_Pivot In sc_Pivot.SlicerItems
            With si_Pivot
                sc_Table.SlicerItems(.Name).Selected = .Selected
            End With
        Next si_Pivot
    End If
End If

With Application
    .ScreenUpdating = True
    .Calculation = xlCalculationAutomatic
End With

End Sub
选项显式
专用子工作表_数据透视表更新(ByVal目标作为数据透视表)
Dim sLastUndoStackItem作为字符串
将sc_枢轴调整为切片机
将sc_表的尺寸设置为切片机
将si_轴调整为SlicerItem
Dim si_表作为SlicerItem
应用
.ScreenUpdate=False
.Calculation=xlCalculationManual
以

如果Target.Name=“PivotTable1”,则“为数据透视表创建一个切片器,为数据透视表创建一个切片器。确保PT切片器可见,并且表切片器隐藏在用户看不到的地方。然后将此代码放入与您的PT所在的工作表对应的工作表模块中:

Option Explicit

Private Sub Worksheet_PivotTableUpdate(ByVal Target As PivotTable)
Dim sLastUndoStackItem As String
Dim sc_Pivot As SlicerCache
Dim sc_Table As SlicerCache
Dim si_Pivot As SlicerItem
Dim si_Table As SlicerItem

With Application
    .ScreenUpdating = False
    .Calculation = xlCalculationManual
End With

If Target.Name = "PivotTable1" Then '<= Change name as appropriate
    On Error Resume Next 'in case the undo stack has been wiped or doesn't exist
    sLastUndoStackItem = Application.CommandBars(14).FindControl(ID:=128).List(1) 'Standard Commandbar, undo stack
    'The above line doesn't seem to work in my version of O365 so we'll use the English language backup
    If sLastUndoStackItem = "" Then sLastUndoStackItem = Application.CommandBars("Standard").Controls("&Undo").List(1)
    On Error GoTo 0

    If sLastUndoStackItem = "Filter" Or sLastUndoStackItem = "Slicer Operation" Then

        Set sc_Pivot = ActiveWorkbook.SlicerCaches("Slicer_Data") '<= Change name as appropriate
        Set sc_Table = ActiveWorkbook.SlicerCaches("Slicer_Data1") '<= Change name as appropriate
        sc_Table.ClearAllFilters

        On Error Resume Next 'In case items differ between Table and PT
        For Each si_Pivot In sc_Pivot.SlicerItems
            With si_Pivot
                sc_Table.SlicerItems(.Name).Selected = .Selected
            End With
        Next si_Pivot
    End If
End If

With Application
    .ScreenUpdating = True
    .Calculation = xlCalculationAutomatic
End With

End Sub
选项显式
专用子工作表_数据透视表更新(ByVal目标作为数据透视表)
Dim sLastUndoStackItem作为字符串
将sc_枢轴调整为切片机
将sc_表的尺寸设置为切片机
将si_轴调整为SlicerItem
Dim si_表作为SlicerItem
应用
.ScreenUpdate=False
.Calculation=xlCalculationManual
以

如果Target.Name=“PivotTable1”,那么“你用谷歌搜索过这个吗?”?搜索过这个网站吗?我知道我已经看到了类似问题的答案…可能是…的副本(仅从这个网站上)。你用谷歌搜索过这个吗?搜索过这个网站吗?我知道我已经看到了类似问题的答案…可能是重复的…(仅从这个网站)。嗨,杰夫,你有关于这个的视频教程吗。因为我也有同样的问题。我正试图用一个切片器控制透视表和excel表,但无法做到。我尝试在宏中的透视表上粘贴代码。它仍然不能像上面所示那样工作。Hi-Jitesh。您的数据透视表的名称是什么?嗨,Jeff,基本上我已经将所有数据源转换为excel表(Ctr+T),所以如果我添加任何新值,它将自动添加到我的数据透视表中。现在的问题是,我创建了两个切片器,一个来自excel表,另一个来自此数据透视表。为了便于参考,我附上了示例文件(Example.xlsx),您可以找到“DataSource_选项卡”和“Pivot_选项卡”。如果我在一个切片器中进行更改,则不会对另一个切片器产生任何影响。嗨,杰夫,你有关于这个的视频教程吗。因为我也有同样的问题。我正试图用一个切片器控制透视表和excel表,但无法做到。我尝试在宏中的透视表上粘贴代码。它仍然不能像上面所示那样工作。Hi-Jitesh。您的数据透视表的名称是什么?嗨,Jeff,基本上我已经将所有数据源转换为excel表(Ctr+T),所以如果我添加任何新值,它将自动添加到我的数据透视表中。现在的问题是,我创建了两个切片器,一个来自excel表,另一个来自此数据透视表。为了便于参考,我附上了示例文件(Example.xlsx),您可以找到“DataSource_选项卡”和“Pivot_选项卡”。如果我在一个切片器中进行更改,则不会对另一个切片器产生任何影响。