Range.AutoFilter 方法 (Excel)

通过 AutoFilter 筛选列表。

语法

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

expression:一个返回 Range 对象的表达式。

参数

名称 必需/可选 数据类型 说明
Field 可选 Variant 相对于作为筛选基准字段(从列表左侧开始,最左侧的字段为第一个字段)的字段的整型偏移量。
Criteria1 可选 Variant 条件(字符串;例如,“101”)。 使用 "=" 查找空白字段,使用 "<>" 查找非空白字段,使用 "><" 选择数据类型中的(否数据)字段。

如果此参数被省略,条件为“全部”。 如果 OperatorxlTop10Items,则 Criteria1 指定项数(例如“10”)。
Operator 可选 XlAutoFilterOperator 一个指定筛选器类型的 XlAutoFilterOperator 常量。
Criteria2 可选 Variant 第二个条件(字符串)。 与 Criteria1Operator 一起组合成复合筛选条件。 也用作日期字段的单一条件(按日、月或年筛选)。 后跟一个数组,该数组用于详述和筛选 Array(Level, Date)。 其中,Level 为 0-2(年、月、日),Date 为筛选期内的一个有效日期。
SubField 可选 Variant 对其应用条件的数据类型中的字段(例如,来自地理位置的“人口”字段或来自股票的“交易量”字段)。 省略此值目标是“(显示值)”。
VisibleDropDown 可选 Variant 如果为 True,则显示已筛选字段的 AutoFilter 下拉箭头。 如果为 False,则隐藏已筛选字段的 AutoFilter 下拉箭头。 默认情况下为 True

返回值

Variant

注解

如果忽略全部参数,此方法仅在指定区域切换自动筛选下拉箭头的显示。

Excel for Mac 不支持此方法。 支持对 SelectionListObject 使用类似方法。

与在公式中不同,子字段无需使用括号即可包含空格。

示例

此示例会筛选工作表 Sheet1 上从单元格 A1 开始的列表,从而仅显示字段 1 等于字符串 Otis 的条目。 将隐藏字段 1 的下拉箭头。

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

此示例会筛选工作表 Sheet1 上从单元格 A1 开始的列表,从而仅显示字段 1 的值包含 SubField = 行政署 1 (省/市/自治区/其他) 的条目,其中该值为“华盛顿”。

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

此示例会筛选工作表 Sheet1 上的表格 Table1,从而仅显示字段 1 的值具有为 1、3、“西雅图”或“雷德蒙德”的“(显示值)”的条目。

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

数据类型可应用多个 SubField 筛选器。 此示例会筛选工作表 Sheet1 上的表格 Table1,从而仅显示字段 1 的值包含 SubField = 时区的条目,其中该值为太平洋时区,名为“找到的日期”的 SubField 为 1851 或“(无数据)”。

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,从而根据“人口”SubField 显示字段 1 的前 10 个条目。

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

此示例会筛选 Sheet1 上的表格 Table1,以显示字段 1 中 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 支持和反馈,获取有关如何接收支持和提供反馈的指南。