描述
使用此函数可以从范围或数组中提取符合指定条件的行。
句法
FILTER(数组, include, [if_empty])
输入
该函数接受以下参数:
| 姓名 | 必要 | 描述 | 有效输入 |
|---|---|---|---|
数组 |
是的 | 要筛选的范围或数组。 | 单元格、单元格区域、动态数组或公式,其结果可以是上述任何一种。 |
包含 |
是的 | 用于确定要返回哪些行的布尔数组或逻辑表达式。 | 逻辑值(TRUE 或 FALSE)、数字(0 为 FALSE,其他数字为 TRUE)、包含这些值之一的单元格的引用,或得出这些值之一的公式。 |
如果为空 |
不 | 如果没有行符合筛选条件,则返回该值。 | 如果没有找到匹配的行,则显示此文本字符串。 |
实例
范例数据
| A | B | C | D | |
|---|---|---|---|---|
| 1 | 姓名 | 时代 | 城市 | 薪水 |
| 2 | 约翰 | 35 | 纽约 | 75000 |
| 3 | 爱丽丝 | 28 | 芝加哥 | 65000 |
| 4 | 鲍勃 | 42 | 洛杉矶 | 85000 |
| 5 | 乔治 | 22 | 丹佛 | 55000 |
| 6 | 海伦 | 30 | 斯科茨代尔 | 71000 |
示例公式
范围必须匹配!如果使用 FILTER 函数筛选多个范围,则筛选表达式中指定的所有范围的行值必须相同。
| 用例 | 公式 | 结果与解释 | ||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 创建包含所有 30 岁以上员工的数据集。 | =FILTER(A1:D6, B1:B6>30) |
该公式检查数据集(A1:D6),然后提取年龄大于 30 的行。
|
||||||||||||||||||||||||||
| 创建包含所有 50 岁以上员工的数据集,如果没有符合条件的员工,则显示自定义消息。 | =IFERROR(FILTER(A2:D6, B2:B6>50), "无") |
该公式使用 FILTER 函数检查数据集(A2:D6),然后提取年龄大于 50 的行。由于没有空字符串,这将产生一个错误,该错误由 IFERROR 处理,以显示字符串“None”。使用上述数据集,可得出以下结果:
|
||||||||||||||||||||||||||
| 创建一个数据集,其中包含所有 25 岁以上的员工,并按薪资降序排列。 | =排序(过滤器(A2:D6, B2:B6>25), 4, -1) |
该公式使用 FILTER 函数检查数据集(A1:D6),然后提取年龄大于 25 的行。 使用上述数据集,可得出以下结果:
|
||||||||||||||||||||||||||
| 找到收入高于平均水平的员工。 | =FILTER(A2:D6, D2:D6> AVERAGE(D2:D6)) |
该公式确定工资的 平均值(D2:D6) ,然后使用 FILTER 检查数据集(A2:D6),并提取工资高于平均值的行。根据上面的数据表,可以得出以下结果:
|
||||||||||||||||||||||||||
| 找出年龄在 30 岁以下且年收入超过 60,000 的员工。 | =过滤器(A1:D6,(B1:B6<30)*(D1:D6>60000)) |
该公式确定工资的 平均值(D2:D6) ,然后使用 FILTER 检查数据集(A2:D6),并提取工资高于平均值的行。
|
笔记
- 与所有数组函数一样,FILTER 函数会从包含 FILTER 函数的单元格开始,动态地将结果填充到相邻的单元格中。
- 筛选:
- 支持复杂的多条件过滤。
- 返回符合指定逻辑条件的行。
- 支持使用*(“AND”)或+(“OR”)进行多个逻辑测试。
例如,要筛选一个范围以显示 B 列值为“Chocolate ”或 “ Coffee”的记录,公式为: =FILTER(A2:C100, (B2:B100="Chocolate") + (B2:B100="Coffee")) 。
使用技巧
- 如果你有一个标题行,并且你不想包含标题,请将数组值从下一行开始(例如,在上面的数据集中,从 A2 而不是 A1 开始)。
- 筛选功能可以与其他功能结合使用,包括:
- 选择行: 进一步细化筛选后的结果。
- CHOOSECOLS: 从筛选后的数据中选择特定列。
- SORT: 对筛选后的结果进行排序。
相关功能
以下是 Workiva 电子表格中支持的其他数组公式函数。