2016-04-23 76 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