[英]How do I autofilter using an array for criteria
我只是在學習使用數組,並且對如何將數組用作自動過濾條件的輸入有些困惑。 我想設置一個帶有值的數組,然后使用這些相同的值過濾一個Excel電子表格。 我做了下面的代碼,但是當我嘗試自動過濾時,它總是拋出錯誤
這是我的代碼
Dim I As Integer
ReDim arr(1 to var) As Variant 'var is defined in a different function with a #
I = 1
For Each rngValue In rngValues.cells 'rngValues is defined in a different function
If rngValue ="c" then
arr(I)=rngValue.Offset(0,2)
End If
I = I +1
Next rngValue
arr(I) = "="
With ws1
.[A1].Autofilter Field:=1, Criteria1:=arr, operator:xlfiltervalues
End With
也許你可以試試這個
fil = Split(Join(Application.Transpose(Range("list")))) ' here list is the name of the range
Range("A1").AutoFilter field:=1, Criteria1:=fil, Operator:=xlFilterValues 'it will only filter the list values
您可以通過如下所示直接傳遞Range值來更快地將Range值傳遞給數組:
Dim arr As Variant '~~> no need to re-dimension
arr = Application.Transpose(rngValues) '~~> Transpose produces 1D array
ws1.Range("A1").AutoFilter 1, arr, xlFilterValues
請注意, rngValue應該只包含一維范圍區域。
但是,如果您想堅持自己的邏輯; 也可以處理2維范圍或非連續范圍,以下應起作用:
Dim i As Long: i = 1
ReDim arr(1 to rngValues.Cells.Count)
For Each rngValue In rngValues
arr(i) = rngValue.Value
i = i + 1
Next
ws1.Range("A1").AutoFilter 1, arr, xlFilterValues
在任何情況下,請確保生成的用作過濾器的數組是1D。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.