Игнорировать элемент массива, если он не существует в элементах среза (фильтрация среза с массивом) - PullRequest
0 голосов
/ 15 марта 2019

Я столкнулся с проблемой при фильтрации среза сводной таблицы на основе 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.

Возможно, некоторые из вас будут иметь представление о том, как решить эту проблему.Любая помощь будет оценена, спасибо!

1 Ответ

0 голосов
/ 15 марта 2019

Не обращайте внимания на мой предыдущий ответ, момент блондинки.Конечно, вам нужен массив.

Вы можете создать динамический массив на основе 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;)

...