Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/23.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_Excel Formula - Fatal编程技术网

Excel表和透视表数据使用一个切片器进行更改

Excel表和透视表数据使用一个切片器进行更改,excel,vba,excel-formula,Excel,Vba,Excel Formula,我有Excel表(Ctr+T),并在不同的Excel选项卡上使用相同的Excel表制作了一个透视表。 是否有任何方法可以使用一个切片器同时更改(Excel表和透视表)。或者一个切片器中的更改可能会导致另一个切片器中的更改 我看过视频和其他问答论坛,它们并没有达到目的 我试图通过进入切片器中的报告连接选项来连接这两个切片器。但是我找不到第二个切片器名称。如果创建两个切片器,一个用于表,一个用于透视表,则可以从事件宏控制表切片器。将其放入ThisWorkbook模块: Private子工作表\u数据

我有Excel表(Ctr+T),并在不同的Excel选项卡上使用相同的Excel表制作了一个透视表。 是否有任何方法可以使用一个切片器同时更改(Excel表和透视表)。或者一个切片器中的更改可能会导致另一个切片器中的更改

我看过视频和其他问答论坛,它们并没有达到目的


我试图通过进入切片器中的报告连接选项来连接这两个切片器。但是我找不到第二个切片器名称。

如果创建两个切片器,一个用于表,一个用于透视表,则可以从事件宏控制表切片器。将其放入ThisWorkbook模块:

Private子工作表\u数据透视表更新(ByVal目标作为数据透视表)
作为切片机的切片机
Dim TableSlicer作为切片机
设置PivotSlicer=ActiveWorkbook.SlicerCaches(“”)
Set TableSlicer=ActiveWorkbook.SlicerCaches(“”)
将SlicerItem视为SlicerItem
Dim TableSlicerItem作为SlicerItem
TableSlicer.ClearAllFilters
对于PivotSlicer.SlicerItems中的每个PivotSlicerItems
Set-TableSlicerItem=TableSlicer.SlicerItems(PivotSlicerItem.Name)
TableSlicerItem.Selected=PivotSlicerItem.Selected
下一个
端接头
更新第5行和第6行中切片器的名称。这将遍历pivot切片器中的项目,并将表切片器设置为相同的值


需要表切片器,但应使其不可见。

如果创建两个切片器,一个用于表,另一个用于透视表,则可以从事件宏控制表切片器。将其放入ThisWorkbook模块:

Private子工作表\u数据透视表更新(ByVal目标作为数据透视表)
作为切片机的切片机
Dim TableSlicer作为切片机
设置PivotSlicer=ActiveWorkbook.SlicerCaches(“”)
Set TableSlicer=ActiveWorkbook.SlicerCaches(“”)
将SlicerItem视为SlicerItem
Dim TableSlicerItem作为SlicerItem
TableSlicer.ClearAllFilters
对于PivotSlicer.SlicerItems中的每个PivotSlicerItems
Set-TableSlicerItem=TableSlicer.SlicerItems(PivotSlicerItem.Name)
TableSlicerItem.Selected=PivotSlicerItem.Selected
下一个
端接头
更新第5行和第6行中切片器的名称。这将遍历pivot切片器中的项目,并将表切片器设置为相同的值


需要表格切片器,但应使其不可见。

Hi@Sam。。我将上述代码保存在project explorer下的“此工作簿”中。还要更改行号5和6中的切片器名称。。但它仍然不起作用(将断点放在第11行,并在代码停止时检查PivotSlicer和TableSlicer的值。它们是否为空?嗨,Sam,我尝试将断点放在第11行并再次运行,但似乎没有任何效果。我放置了一个“VBA_示例”下面路径中的命名文件。抱歉。我不会下载.xlsm文件。我确信上面的代码可以正常工作。我的建议是,使用最少的代码和数据创建一个新的干净的工作簿,看看是否可以正常工作。嗨@Sam..我将上面的代码保留在“此工作簿”中在project explorer下。同时更改第5行和第6行中的切片器名称。但仍然不起作用。:(在第11行中放置断点,并在代码停止时检查PivotSlicer和TableSlicer的值。它们是否为空?嗨,Sam,我尝试在第11行中放置断点并再次运行,但似乎没有任何效果。我放置了一个“VBA_示例”下面路径中的命名文件。抱歉。我不会下载.xlsm文件。我确信上面的代码可以正常工作。我的建议是,您使用最少的代码和数据创建一个新的干净的工作簿,看看是否可以正常工作。
Private Sub Worksheet_PivotTableUpdate(ByVal Target As PivotTable)
    Dim PivotSlicer As SlicerCache
    Dim TableSlicer As SlicerCache

    Set PivotSlicer = ActiveWorkbook.SlicerCaches("<Name of pivot slicer>")
    Set TableSlicer = ActiveWorkbook.SlicerCaches("<Name of table slicer>")

    Dim PivotSlicerItem As SlicerItem
    Dim TableSlicerItem As SlicerItem

    TableSlicer.ClearAllFilters
    For Each PivotSlicerItem In PivotSlicer.SlicerItems
        Set TableSlicerItem = TableSlicer.SlicerItems(PivotSlicerItem.Name)
        TableSlicerItem.Selected = PivotSlicerItem.Selected
    Next
End Sub