簡體   English   中英

如何使用數組自動過濾條件

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM