Range.AutoFilter 方法 (Excel)

使用 [自動篩選] 篩選清單。

語法

expression.AutoFilter (Field, Criteria1, Operator, Criteria2, SubField, VisibleDropDown)

expression 傳回 Range 物件的運算式。

參數

名稱 必要/選用 資料類型 描述
Field 選用 Variant 想要做為篩選基準之欄位 (從清單左側開始,最左側的欄位為第一欄) 的整數位移。
Criteria1 選用 Variant 準則 (為字串,例如 "101")。 使用 "=" 來尋找空白欄位,使用 "<>" 來尋找非空白欄位,以及使用 "><" 來選取資料類型中的 (無資料) 欄位。

如果省略此引數,則準則為 All。 如果 OperatorxlTop10ItemsCriteria1 會指定項目個數 (例如,"10")。
Operator 選用 XlAutoFilterOperator 指定篩選的類型的 XlAutoFilterOperator 常數。
Criteria2 選用 Variant 第二準則 (為字串)。 與 Criteria1Operator 搭配使用,建構複合準則。 也可以用來做為日期欄位上依日期、月份或年份篩選的單一準則。 後面接著 Array 和詳細說明的篩選準則 Array(Level, Date)。 其中 Level 是 0-2 (年份、月份、日期),Date 是篩選期間的一個有效日期。
SubField Optional Variant 要套用準則所在資料類型的欄位 (例如,來自 Geography 的 "Population" 欄位或來自 Stocks 的 "Volume" 欄位)。 省略此值時,會以 "(Display Value)" 為目標。
VisibleDropDown 選用 Variant 若為 True ,顯示篩選欄位的 [自動篩選] 下拉式箭號。 若為 False ,隱藏篩選欄位的 [自動篩選] 下拉式箭號。 預設值為 True

傳回值

Variant

註解

如果您忽略所有引數,這個方法只會在指定的範圍內切換顯示 [自動篩選] 下拉式箭號。

Mac 版 Excel 不支援此方法。 支援 SelectionListObject 上類似的方法。

與公式不同,subfield 不需要以括號包含空格。

範例

本範例會篩選從 Sheet1 工作表中 A1 儲存格開始的清單,只顯示第一欄為字串 Otis 的項目。 將會隱藏第一欄的下拉式箭號。

Worksheets("Sheet1").Range("A1").AutoFilter _
 Field:=1, _
 Criteria1:="Otis", _
 VisibleDropDown:=False

此範例會篩選 Sheet1 上儲存格 A1 開始的清單,以僅顯示欄位一中包含 SubField Admin Division 1 (State/province/other) 的值,其中的值是 Washington 的項目。

Worksheets("Sheet1").Range("A1").AutoFilter _
 Field:=1, _
 Criteria1:="Washington", _
 SubField:="Admin Division 1 (State/province/other)"

此範例會篩選 Sheet1 上的資料表 "Table1",以僅顯示欄位一中具有的 "(Display Value)" 為值 "1"、"3"、"Seattle" 或 "Redmond" 的項目。

Worksheets("Sheet1").ListObjects("Table1").Range.AutoFilter _
 Field:=1, _
 Criteria1:=Array("1", "3", "Seattle", "Redmond"), _
 Operator:=xlFilterValues

資料類型可以套用多個 SubField 篩選。 此範例會篩選 Sheet1 上的資料表 Table1,僅顯示欄位一中包含 SubField Time zone(s) 的值,其中的值為 Pacific Time Zone,而其中的 SubField Date Founded 為 1851 或者為 "(No Data)"。

Worksheets("Sheet1").ListObjects("Table1").Range.AutoFilter _
 Field:=1, _
 Criteria1:="Pacific Time Zone", _
 SubField:="Time Zone(s)"
Worksheets("Sheet1").ListObjects("Table1").Range.AutoFilter _
 Field:=1, _
 Criteria1:=Array("1851", "><"), _
 Operator:=xlFilterValues, _
 SubField:="Date founded"

此範例會篩選 Sheet1 上的資料表 Table1,以根據 Population SubField 顯示欄位一的前 10 個項目。

Worksheets("Sheet1").ListObjects("Table1").Range.AutoFilter _
 Field:=1, _
 Criteria1:="10", _
 Operator:=xlTop10Items, _
 SubField:="Population"

此範例會篩選 Sheet1 上的資料表 Table1,顯示 2019 年 1 月的所有項目,在欄位一顯示 2019 年 2 月。 不一定要有包含 1 月 31 日的列。

Worksheets("Sheet1").ListObjects("Table1").Range.AutoFilter _
 Field:=1, _
 Criteria2:=Array(1, "1/31/2019", 1, "2/28/2019") 

支援和意見反應

有關於 Office VBA 或這份文件的問題或意見反應嗎? 如需取得支援服務並提供意見反應的相關指導,請參閱 Office VBA 支援與意見反應