我想过滤工作表,不包括存储在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
但它不起作用。请指导我如何做到这一点。
答案 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