如果切片器项中不存在,则忽略数组项(使用数组切片器筛选)

问题描述 投票:0回答:1

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

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

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

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

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

arrays excel vba olap-cube
1个回答
0
投票

忽略我之前的回答,金发时刻。你需要一个阵列。

您可以基于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

问候同事;)

© www.soinside.com 2019 - 2024. All rights reserved.