Skip to content

AutoFilter

代表对指定工作表的自动筛选,可通过此对象对工作表中的数据进行筛选,快速找到想要的值。可以组合一列或多列数据进行筛选。

使用筛选,不仅可以控制想要查看的内容,还可以控制想要排除的内容。在进行数据筛选时,如果一列或多列中的数值不能满足筛选条件,整行数据都会隐藏起来。可以对数值或文本值进行筛选,也可以对背景或文本应用颜色格式的单元格按颜色进行筛选。

开发者可以通过Filters 属性获取由各个列筛选组成的集合。 使用Range属性可返回代表整个筛选区域的Range对象。

注意

若要为工作表创建 AutoFilter 对象,必须在工具栏手动开启筛选功能或者使用Range对象的AutoFilter方法为工作表上的某个区域启用自动筛选。

AutoFilter 对象的具体属性和方法请参阅下方的列表。

属性列表

属性名数据类型简介
FiltersFilters筛选对象集合
RangeRange筛选区域

方法列表

方法名返回类型简介
ApplyFilter()undefined应用筛选到当前工作表
ShowAllData()undefined清除所有筛选条件,显示所有数据

应用示例

以下为您展示自动筛选对象的在工作表内的一些常见应用场景:

假设我们有如下的工作表,现在需要对它进行筛选操作,以显示我们期望的数据。

示例工作表

  1. 筛选出姓名为金小獴的数据
js
// 获取自动筛选对象
const autoFilter = ActiveSheet.AutoFilter
// 获取姓名列的筛选对象
const filter2 = autoFilter.Filters.Item(2)
// 设置筛选类型为值筛选
filter2.Operator = Enum.XlAutoFilterOperator.xlFilterValues
// 设置筛选的值
filter2.Criteria1 = ['金小獴']
// 应用筛选
autoFilter.ApplyFilter()
  1. 筛选出语文成绩在前 20%的数据
js
// 获取自动筛选对象
const autoFilter = ActiveSheet.AutoFilter
// 获取语文列的筛选对象
const filterItem = autoFilter.Filters.Item(5)
// 设置筛选类型为头部百分比筛选
filterItem.Operator = Enum.XlAutoFilterOperator.xlTop10Percent
// 设置筛选条件为20%
filterItem.Criteria1 = '20'
// 应用筛选
autoFilter.ApplyFilter()
  1. 筛选出数学前十名的数据
js
// 获取自动筛选对象
const autoFilter = ActiveSheet.AutoFilter
// 获取数学列的筛选对象
const filterItem = autoFilter.Filters.Item(6)
// 设置筛选类型为头部筛选
filterItem.Operator = Enum.XlAutoFilterOperator.xlTop10Items
// 设置筛选条件为10,即前十名
filterItem.Criteria1 = '10'
// 应用筛选
autoFilter.ApplyFilter()
  1. 将姓名列中单元格为红色的筛选出来
js
// 获取自动筛选对象
const autoFilter = ActiveSheet.AutoFilter
// 获取姓名列的筛选对象
const filterItem = autoFilter.Filters.Item(2)
// 设置筛选类型为单元格颜色筛选
filterItem.Operator = Enum.XlAutoFilterOperator.xlFilterCellColor
// 设置筛选条件为红色
filterItem.Criteria1 = '#FF0000'
// 应用筛选
autoFilter.ApplyFilter()
  1. 筛选出语文分介于100至200之间的数据
js
// 获取自动筛选对象
const autoFilter = ActiveSheet.AutoFilter
// 获取语文列的筛选对象
const filterItem = autoFilter.Filters.Item(5)
// 设置筛选类型为条件与筛选
filterItem.Operator = Enum.XlAutoFilterOperator.xlAnd
// 设置筛选条件
filterItem.Criteria1= '>=100'
filterItem.Criteria2= '<=200'
// 应用筛选
autoFilter.ApplyFilter()
  1. 筛选第姓名包含'张三'或者开头等于'李四'的数据
js
// 获取自动筛选对象
const autoFilter = ActiveSheet.AutoFilter
// 获取姓名列的筛选对象
const filterItem = autoFilter.Filters.Item(2)
// 设置筛选类型为条件或筛选
filterItem.Operator = Enum.XlAutoFilterOperator.xlOr
// 设置筛选条件
filterItem.Criteria1= '=*张三*'
filterItem.Criteria2= '=李四*'
// 应用筛选
autoFilter.ApplyFilter()

Filters

筛选对象集合

该集合内包含所有可供操作的数据列筛选对象

数据类型

Filters - Filter 集合

Count

当前所有筛选器对象的数量

数据类型

Number - 对应当前工作表所有筛选对象的数量

示例

js
// 获取自动筛选对象
const autoFilter = Application.ActiveSheet.AutoFilter
// 获取筛选对象集合
const filters = autoFilter.Filters
// 获取当前工作表所有筛选对象的数量
const count = filters.Count
console.log(count)

Each()

遍历所有 Filters 并执行回调函数

参数

属性数据类型默认值必填说明
callbackFunctionnull类似 JS 数组的 forEach

示例

js
// 获取自动筛选对象
const autoFilter = Application.ActiveSheet.AutoFilter
// 获取筛选对象集合
const filters = autoFilter.Filters
// 遍历筛选集合,执行回调函数
filters.Each(item => {
  console.log(item.Operator)
})

Item()

根据索引选择对应的筛选对象

参数

属性数据类型默认值必填说明
indexString/Number对应工作表内的实际列号,索引从 1 开始

返回类型

Filter - 返回对应索引的筛选对象

示例

js
// 获取自动筛选对象
const autoFilter = Application.ActiveSheet.AutoFilter
// 获取筛选对象集合
const filters = autoFilter.Filters
// 获取第一个筛选对象
const filter1 = filters.Item(1)

Item().Operator

指定筛选类型,可使用的筛选类型请参照枚举值XlAutoFilterOperator

数据类型

XlAutoFilterOperator - 枚举值 XlAutoFilterOperator

示例

js
// 获取自动筛选对象
const autoFilter = Application.ActiveSheet.AutoFilter
// 获取第一个筛选对象
const filter1 = autoFilter.Filters.Item(1)
// 设置筛选类型为单元格颜色
filter1.Operator = Enum.XlAutoFilterOperator.xlFilterCellColor

Item().Criteria1

指定判断条件,使用“=”查找空字段,或者使用“<>”查找非空字段。如果忽略该参数,那么判断是全部。如果参数 Operator 是 xlTop10Items,那么参数 Criterial1 指定项目的数量

数据类型

Variant - 根据指定的筛选类型确定

Item().Criteria2

第二个判断条件。与 Criteria1 和 Operator 一起组合成复合筛选条件。 也用作日期字段的单一条件(按日、月或年筛选)。 后跟一个数组,该数组用于描述筛选 Array(Level, Date)。 其中,Level 为 0-2(年、月、日),Date 为筛选期内的一个有效日期

数据类型

Variant - 根据指定的筛选类型确定

Range

自动筛选的区域范围

数据类型

Range - 区域对象

示例

js
// 获取自动筛选对象
const autoFilter = Application.ActiveSheet.AutoFilter
// 获取自动筛选的区域
const range = autoFilter.Range
// 打印该区域内的单元格数量
console.log(range.Count)

ApplyFilter()

将自动筛选器应用于区域,在设置好筛选类型和筛选条件后,调用此方法来应用筛选

示例

js
// 获取自动筛选对象
const autoFilter = Application.ActiveSheet.AutoFilter
// 设置第一列的筛选类型为单元格颜色
autoFilter.Filters.Item(1).Operator =
  Enum.XlAutoFilterOperator.xlFilterCellColor
// 设置第一列的筛选条件是#44546A
autoFilter.Filters.Item(1).Criteria1 = '#44546A'
// 应用筛选到区域
autoFilter.ApplyFilter()

ShowAllData()

清除所有筛选条件,显示所有数据

示例

js
// 获取自动筛选对象
const autoFilter = Application.ActiveSheet.AutoFilter

// 清除所有筛选条件
autoFilter.ShowAllData()