在excel vba中使用多个值进行过滤

时间:2016-04-23 06:21:02

标签: excel excel-vba vba

我想过滤工作表,不包括存储在A列中另一个工作表中的所有值。对于该存储,所有值都存入数组

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

尝试使用以下命令进行过滤

rngTar.AutoFilter Field:=2, Criteria1:=xArray, Operator:=xlFilterValues

但它不起作用。请指导我如何做到这一点。

1 个答案:

答案 0 :(得分: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过滤范围时,即使您只选择了一列,也无法创建二维数组。

相反,您可以使用以下方法在数组中加载值:

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