如果数组项不存在于切片器项中,则忽略数组项(切片器使用数组进行过滤)

Ignore array item if it doesn't exist in slicer items (slicer filtering with array)

我在使用数组中的项目过滤基于 OLAP 的数据透视表 table 切片器时遇到问题。

我有一个数组,其中包含与切片器项目标题相同的机器编号,如下所示:

machines = Array("Machine1", "Machine2", "Machine3" etc.. )

我想使用这个数组来过滤切片器:

ActiveWorkbook.SlicerCaches("MachinesSlicer").VisibleSlicerItemsList = Array(machines)

它工作正常,直到数组中有一个机器号在切片器项目中不可见(例如由于其他切片器过滤,如日期等)。 有没有办法绕过导致问题的那些项目?

我尝试创建一个新数组,遍历切片器项并将它们与数组项进行比较,使用:

For Each machName In machines
    For Each si1 In sl1.SlicerItems
        If si1.Caption = machName Then
        TestArray = TestArray & Chr(34) & si1.Caption & Chr(34) & Chr(44)
        End If
    Next si1
Next machName

但它所做的是创建一个数组,其中有一个元素是一个字符串,如下所示:

"Machine1", "Machine2", Machine3" ...etc

但我需要将这些元素分开,以便将它们传递到 VisibleSlicerItemList。

也许你们中的一些人会知道如何解决这个问题。 任何帮助将不胜感激,谢谢!

忽略我之前的回答,金发瞬间。你当然需要一个数组。

可以根据sl1.SlicerItems

创建动态数组
Dim dynArr()
Dim i as Integer 'Long
Dim si1

For Each si1 In sl1.SlicerItems
    i = i + 1
    ReDim Preserve dynArr(1 To i)
    dynArr(i) = si1.Caption
Next

音乐学院 ;)