2015-03-31 96 views
0

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

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 

回答

0

您需要指定使用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 
+0

杰夫,太感谢你了;您的解决方案已解决我的问题。你不会相信我用这个玩了多久。 Slàintemhath! – GMcNaugh 2015-04-01 07:23:52

+0

很高兴帮助! – Geoff 2015-04-02 12:23:58