【问题标题】:VBA to AutoFilter Dataset Based on Slicer SelectionsVBA 到基于切片器选择的自动过滤数据集
【发布时间】:2015-04-01 04:48:54
【问题描述】:

我有一系列切片器控制多个数据透视表,这些数据透视表又生成一些饼图。从选择的切片器项目中,我想自动过滤底层数据集以总结用于生成饼图的信息。到目前为止,我已经设法生成了以下代码,我承认我从这里的另一篇文章中收集到了这些代码:AutoFilter Criteria Using Array (Error) - Too Large String? 下面的代码将自动过滤数据集,但仅使用切片器中选择的最后一项而不是任何其他选择,即如果选择了切片器的所有项目,则自动过滤仅使用最后一项而不是整个系列进行过滤。看起来数组元素没有按预期工作。 任何帮助都将被感激地接受。 谢谢。

Sub FilterData()
Dim sArr() As String
Dim sCache As SlicerCache
Dim wb As Workbook
Set wb = ThisWorkbook
Set sCache = wb.SlicerCaches("Slicer_Unit")
   For Each sItem In ActiveWorkbook.SlicerCaches(sCache.Name).SlicerItems
        If sItem.Selected = True Then
            ReDim Preserve sArr(0 To sCount)
            sArr(sCount) = sItem.Name
            sCount = sCount + 1
        End If
    Next sItem
 Sheets("Sheet1").Activate
ActiveSheet.Range("$A$1:$Z$50000").AutoFilter Field:=1, Criteria1:=sArr()
ReDim sArr(0 To 0)
End Sub

【问题讨论】:

    标签: arrays vba excel


    【解决方案1】:

    您需要使用Operator 参数指定您提供的标准类型。换行

    ActiveSheet.Range("$A$1:$Z$50000").AutoFilter _
      Field:=1, _
      Criteria1:=sArr()
    

    ActiveSheet.Range("$A$1:$Z$50000").AutoFilter _
      Field:=1, _
      Criteria1:=sArr(), _
      Operator:=xlFilterValues
    

    【讨论】:

    • 杰夫,非常感谢;你的解决方案解决了我的问题。你不会相信我已经玩了多久了。 Slàinte mhath!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-09-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-29
    • 1970-01-01
    • 2017-02-04
    相关资源
    最近更新 更多