如果数组项不存在于切片器项中,则忽略数组项(切片器使用数组进行过滤)
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
音乐学院 ;)
我在使用数组中的项目过滤基于 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
音乐学院 ;)