FILTER 函数可以基于定义的条件筛选一系列数据。
在以下示例中,我们使用公式 =FILTER(A5:D20,C5:C20=H2,"") 返回包含“苹果”(如单元格 H2 中所选定)的所有记录,如果没有“苹果”,则返回空字符串 ("")。
语法
FILTER 函数基于布尔值 (True/False) 数组筛选数组。
=FILTER(array,include,[if_empty])
| 参数 | 描述 |
|---|---|
|
array 必需 |
要筛选的数组或区域 |
|
include 必需 |
布尔值数组,其高度或宽度与数组相同 |
|
[if_empty] 可选 |
所含数组中的所有值都为空(筛选器不返回任何内容)时返回的值 |
注意
- 可将数组视为一行值、一列值或几行值和几列值的组合。 在上述示例中,FILTER 公式的源数组为范围 A5:D20。
- FILTER 函数将返回一个数组,如果该数组是公式的最终结果,则将溢出。 这意味着,当按“Enter”时,Excel 将动态创建相应大小的数组范围。 如果支持数据位于 Excel 表格中,若使用结构化引用,则从数组范围中添加或删除数据时,数组将自动重设大小。 有关详细信息,请参阅关于溢出数组行为的此文章。
- 如果数据集可能返回空值,请使用第三个参数 ([if_empty])。 否则,将导致 #CALC! 错误 ,因为 Excel 当前不支持空数组。
- 如果 include 参数的任何值是错误 (#N/A、#VALUE 等 ) 或无法转换为布尔值,则 FILTER 函数将返回错误。
- Excel 对工作簿之间的动态数据提供有限支持,并且仅当这两个工作簿时都处于打开状态时才支持此方案。 如果关闭源工作簿,任何链接的动态数组公式在刷新时都将返回 #REF!错误 。
示例
用于返回多个条件的 FILTER
在本例中, 我们使用乘法运算符 (*) 返回数组范围 (A5:D20) 且 Apple and 位于东部区域的所有值: =FILTER (A5:D20, (C5:C20=H1) * (A5:A20=H2) ,“”) 。
用于返回多个条件并排序的 FILTER
在本例中,我们将以前的 FILTER 函数与 SORT 函数结合使用,以返回数组范围 (A5:D20) ( Apples AND 位于东部区域)中的所有值, 然后按降序对单位进行排序: =SORT (FILTER (A5:D20, (C5:C20=H1) * (A5:A20=H2) ,“”) ,4,-1)
在本例中,我们将 FILTER 函数与加法运算符 (+) 一起使用,以返回数组范围 (A5:D20) Apples 或 位于东部区域的所有值, 然后按降序对单位进行排序: =SORT (FILTER (A5:D20, (C5:C20=H1) + (A5:A20=H2) ,“”) ,4,-1) 。
请注意,这些函数都不需要绝对引用,因为它们仅存在于一个单元格中,并将其结果溢出到相邻单元格。
需要更多帮助吗?
你随时可以在 Excel 技术社区 中咨询专家或在 社区中获取支持。