【问题标题】:Ignore array item if it doesn't exist in slicer items (slicer filtering with array)如果切片器项中不存在数组项,则忽略它(使用数组进行切片器过滤)
【发布时间】:2019-03-15 23:07:27
【问题描述】:

在使用数组中的项目过滤基于 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

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

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

【问题讨论】:

    标签: arrays excel vba olap-cube


    【解决方案1】:

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

    可以根据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
    

    Pozdrawiam kolege ;)

    【讨论】:

    • 谢谢,下周我会试试的,但似乎正是我需要的! Również pozdrawiam :)
    猜你喜欢
    • 2015-09-13
    • 2012-11-10
    • 2020-01-23
    • 2023-04-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多