1. 程式人生 > 其它 >VBA知識--資料自動篩選(AutoFilter)

VBA知識--資料自動篩選(AutoFilter)

  在VBA語句中,我們經常需要對滿足某些條件的資料進行處理,這個時候我們要用到AutoFilter這個功能。AutoFilter這個函式功能很強大,在資料批量處理中應用非常頻繁。AutoFilter函式的語法:Range物件.AutoFilter(Field,Criterial1,Operator,Criteria2,VisibleDropDown)

名稱必需/可選資料型別說明
Field 可選 Variant 相對於作為篩選基準欄位(從列表左側開始,最左側的欄位為第一個欄位)的欄位的整型偏移量。
Criteria1 可選 Variant 條件(字串;例如,“101”)。 使用"="
查詢空白欄位,使用"<>"查詢非空白欄位,使用"><"選擇資料型別中的(否資料)欄位。


如果此引數被省略,條件為“全部”。 如果Operator是xlTop10Items,則Criteria1指定項數(例如“10”)。
Operator 可選 XlAutoFilterOperator 一個指定篩選器型別的XlAutoFilterOperator常量。(XlAutoFilterOperator的選擇見具體的連結)
Criteria2 可選 Variant 第二個條件(字串)。 與Criteria1Operator一起組合成複合篩選條件。 也用作日期欄位的單一條件(按日、月或年篩選)。 後跟一個數組,該陣列用於詳述和篩選Array(Level, Date)。 其中,Level 為 0-2(年、月、日),Date 為篩選期內的一個有效日期。
SubField 可選 Variant 對其應用條件的資料型別中的欄位(例如,來自地理位置的“人口”欄位或來自股票的“交易量”欄位)。 省略此值目標是“(顯示值)”。
VisibleDropDown 可選 Variant 如果為True,則顯示已篩選欄位的 AutoFilter 下拉箭頭。 如果為False,則隱藏已篩選欄位的 AutoFilter 下拉箭頭。 預設情況下為True。

例項說明

  • 單列單條件篩選

    Selection.AutoFilter
    
    Selection.AutoFilter Field:
    =1, Criteria1:=s Selection.CurrentRegion.Select b = [a:a].SpecialCells(xlCellTypeVisible).SpecialCells(xlCellTypeConstants, 23).Cells.Count - 1
  • 多列單條件篩選

        Range('B1').AutoFilter Field:=2,Criteria1:='=女'
        Range('B1').AutoFilter Field:=3,Criteria1:='>=90'B
  • 單列多條件的篩選(條件數量 >= 2)
    一列的自動篩選只能有兩個條件,不過可以允許多個值篩選(Array)

    ActiveSheet.Range("$A$1:$F$19").AutoFilter Field:=3,Criteria1:=">=80", Operator:=xlAnd,Criteria2:="<90"'兩個條件
    With sht.Sheets("temp1").Range("a2:o1048576")
        .AutoFilter field:=1, Criteria1:=Array("M154", "M156", "M158", "M160", "M186"), Operator:=xlFilterValues '大於2個以上的條件採用array進行篩選
        .Copy sht.Sheets("temp2").Cells(1, 1) '兩個以上的條件選用Array
    End With
  • 高階篩選獲得不重複記錄

    Sheets("Original").Range("a:aj").AdvancedFilter Action:=xlFilterCopy, unique:=True, CopytoRange:=sh.Sheets("Close(M)").Range("a1")
  • 取消篩選

    sht.Sheets("temp1").AutoFilterMode = False '取消篩選狀態

    If ActiveSheet.AutoFilterMode = True Then '判斷,並取消篩選狀態
      ActiveSheet.AutoFilterMode = False
    End If

    Autofilter實用很靈活,根據需求指定條件。