2016-04-23 74 views
0

我要过滤的工作表不包括存储在另一个工作表中列A对于存储的所有值所有值到一个数组筛选与

xArray = Worksheets("MainRef").Range("A1:A" & Worksheets("MainRef").Cells(Rows.Count, 1).End(xlUp).Row).Value2 

,并试图用下面的命令

筛选在Excel VBA中的多个值
rngTar.AutoFilter Field:=2, Criteria1:=xArray, Operator:=xlFilterValues 

但它不能正常工作。请指导我如何做到这一点。

回答

0

这里的问题是你的阵列xArray

xArray = Worksheets("MainRef").Range("A1:A" & Worksheets("MainRef").Cells(Rows.Count, 1).End(xlUp).Row).Value2 

当您使用上面的行存储数组中的值时,它会创建一个2-dimensional array。第一个维度是行,第二个维度是列。当您在Local window中看到数组的类型时,它显示Variant(1 to 5, 1 to 1),其中5是行数(例如仅提及5),1是列数。

因此,当您使用xArray过滤范围时,即使您仅选择了一列,也不会像创建2维数组那样工作。

相反,你可以使用以下方法在数组装载值:

Dim N As Long 
With Sheets("MainRef") 
    N = .Cells(Rows.Count, "A").End(xlUp).Row 
    ReDim xArray(1 To N) 
    For i = 1 To N 
     xArray(i) = .Cells(i, 1) 
    Next i 
End With