Private Sub Workbook_SlicerChange(ByVal Slicer As Slicer) Dim sourceSlicerName As String Dim targetSlicerName As String Dim slicerName1 As String Dim slicerName2 As String Dim slicer1 As SlicerCache Dim slicer2 As SlicerCache Dim item As SlicerItem Dim selectedItems As Collection Dim i As Long ' Define your slicer names slicerName1 = "Slicer_SlicerName1" ' First slicer slicerName2 = "Slicer_SlicerName2" ' Second slicer ' Check if Slicer object is valid If Slicer Is Nothing Then Exit Sub If Slicer.SlicerCache Is Nothing Then Exit Sub ' Determine which slicer was changed If Slicer.SlicerCache.Name = slicerName1 Then sourceSlicerName = slicerName1 targetSlicerName = slicerName2 ElseIf Slicer.SlicerCache.Name = slicerName2 Then sourceSlicerName = slicerName2 targetSlicerName = slicerName1 Else Exit Sub ' Not a slicer we want to sync End If ' Set slicer caches Set slicer1 = ThisWorkbook.SlicerCaches(sourceSlicerName) Set slicer2 = ThisWorkbook.SlicerCaches(targetSlicerName) ' Create a collection to hold selected items Set selectedItems = New Collection ' Loop through source slicer items and store selected items For Each item In slicer1.SlicerItems If item.Selected Then selectedItems.Add item.Name End If Next item ' Clear filters on target slicer On Error Resume Next slicer2.ClearManualFilter On Error GoTo 0 ' Deselect all first For Each item In slicer2.SlicerItems item.Selected = False Next item ' Select matching items For i = 1 To selectedItems.Count On Error Resume Next slicer2.SlicerItems(selectedItems(i)).Selected = True On Error GoTo 0 Next iEnd Sub