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 第二個條件(字符串)。 與 Criteria1 和 Operator 一起組合成復合篩選條件。 也用作日期字段的單一條件(按日、月或年篩選)。 后跟一個數組,該數組用於詳述和篩選 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'
  • 單列多條件的篩選(條件數量 >= 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實用很靈活,根據需求指定條件。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM