Range.AutoFIlter方法可以進行自動篩選,語法結(jié)構(gòu)如下:
Range.AutoFilter(Field,Criteria1Operator,Criteria2,VIsibleDropDown);
參數(shù)說明:
Field可選,篩按33選的字段的整型偏移量,;例如篩選A列的字段則取值1,篩選D列的字段則取值4;
Criteria1,可選,字符串類型。篩選條件可以使用“=”,“<”,“>”,“<>”等運算符;
Operator,可選,指定篩選類型。設(shè)置為xlAutoFileterOpearator枚舉中的常量之一,如下表所示:
名稱 | 說明 |
xlAnd | 條件1和條件2的邏輯與 |
xlBottom10Items | 顯示最低值項(條件1中指定的項數(shù)) |
xlBottom10Percent | 顯示最低值項(條件1中指定的百分數(shù)) |
xlFilterCellColor | 顯示單元格顏色 |
xlFilterDynamic | 動態(tài)篩選 |
xlFilterFontColor | 字體顏色 |
xlFilterIcon | 篩選圖標 |
xlFIlterValues | 篩選值 |
xlOr | 條件1與條件2的邏輯或 |
xlTop10Items | 顯示最高值項(條件1中指定的項數(shù)) |
xlTop10Percent | 顯示最高值項(條件1中指定的百分數(shù)) |
Critera2,可選,第二個篩選條件,與Criteria1和Operator一起組成復(fù)合篩選條件;
VIsibleDropDown,可選,如果設(shè)置為true,則顯示篩選字段的自動篩下拉箭頭。
下表為例1到例5使用的數(shù)據(jù)
省份 | 年份 | 產(chǎn)量 |
湖北 | 2006 | 20000 |
廣州 | 2012 | 12000 |
廣東 | 2011 | 23000 |
山西 | 2006 | 8000 |
江西 | 2009 | 7900 |
湖南 | 2006 | 3000 |
湖北 | 2013 | 90002 |
廣東 | 2007 | 12090 |
河南 | 2008 | 2230 |
【例1】篩選省份為湖北的數(shù)據(jù)
Worksheets(1).Select
If ActiveSheet.AutoFilterMode = False Then '檢查是否開啟自動篩選
Range("A1:B9").AutoFilter '沒有開啟的話則開啟自動篩選
End If
ActiveSheet.Range("A1:B9").AutoFilter field:=1, Criteria1:="湖北"
【例2】篩選省份為“湖北”且年份為2013的數(shù)據(jù)
Worksheets(1).Select
If ActiveSheet.AutoFilterMode = False Then '檢查是否開啟自動篩選
Range("A:B").AutoFilter '沒有開啟的話則開啟自動篩選
End If
ActiveSheet.Range("A:B").AutoFilter field:=1, Criteria1:="湖北"
ActiveSheet.Range("A:B").AutoFilter field:=2, Criteria1:="2013", Operator:=xlAnd
【例3】篩選省份為“湖北”或“廣東”的數(shù)據(jù)
ActiveSheet.Range("A:B").AutoFilter field:=1, Criteria1:="湖北", Operator:=xlOr, Criteria2:="廣東"
【例4】篩選“產(chǎn)量”字段高出平均值的所有記錄
ActiveSheet.Range("A1:C10").AutoFilter field:=3, Criteria1:=xlfilteraboveaverage, Operator:=xlfilterdynamic
【例5】篩選“產(chǎn)量”字體設(shè)置為紅色的記錄
ActiveSheet.Range("A1:C10").AutoFilter field:=3, Criteria1:=RGB(255, 0, 0), Operator:=xlfilterfoncolor
下表為例6到例8使用的數(shù)據(jù)
【例6】篩選姓“鄭”且姓名為兩個字的記錄
ActiveSheet.Range("A1:C10").AutoFilter field:=1, Criteria1:="=??", Operator:=xlAnd, Criteria2:="=鄭*"
【例7】篩選不姓“鄭”且姓名為兩個字的記錄
ActiveSheet.Range("A1:C10").AutoFilter field:=1, Criteria1:="=??", Operator:=xlAnd, Criteria2:="<>鄭*"
【例8】清除篩選條件
ActiveSheet.ShowAllData
注意:ActiveSheet.ShowAllData必須在工作表開啟了自動篩選且存在篩選條件時使用,否則會報錯.
【例9】使用高級篩選,選出不重復(fù)的記錄并拷貝到另外一張工作表
Sub test()
Worksheets("AVIC384").Range("D:D").AdvancedFilter _
Action:=xlFilterCopy, unique:=True, _
copyTorange:=Worksheets("tools").Range("H1")
End Sub
聯(lián)系客服