将切片器设置为单元格值

我有一个控制“数据透视表1”的切片机“Slicer_Item”。 根据其他切片机的select,这个切片机有1至100多个项目。 当有这么多的项目,很难find你想要select的东西。

我希望能够input我想要的项目,用逗号分隔,并让切片机自动select这些项目。 这是我迄今为止所尝试的:

ActiveWorkbook.SlicerCaches("Slicer_Item").VisibleSlicerItemsList = Array( _ "[Item].&[" & Worksheets("Forecasting").Range("B2") & "]") 

你可以有一个函数来构造您的切片器项目数组,并将其传回给调用macros。

 Sub slice_away() With ActiveWorkbook With .Worksheets("Forecasting") .SlicerCaches("Slicer_Item").VisibleSlicerItemsList = _ (build_Slicer_Items(.Range("B2:B" & .Range("B2").End(xlDown).Row))) End With End With End Sub Function build_Slicer_Items(rng As Range) Dim e As Long, aITMs() As String, itm As Range ReDim aITMs(1 To 1) For Each itm In rng e = e + 1 ReDim Preserve aITMs(1 To e) aITMs(e) = "[Item].&[" & itm.Value2 & "]" Next itm build_Slicer_Items = aITMs End Function 

这编译但未经testing的数据。 请注意,该function被包裹在括号内。 将作为variables存储的数组作为parameter passing给某些调用命令时,通常不会将数组标识为没有一组包围的数组。