FILTER 函数

应用对象
Microsoft 365 专属 Excel Microsoft 365 Mac 版专属 Excel Excel 2024 Excel 2024 for Mac Excel 2021 Excel 2021 for Mac Excel for iPad Excel for iPhone Excel for Android 平板电脑版 Excel for Android 手机版

FILTER 函数可以基于定义的条件筛选一系列数据。

在以下示例中,我们使用公式 =FILTER(A5:D20,C5:C20=H2,"") 返回包含“苹果”(如单元格 H2 中所选定)的所有记录,如果没有“苹果”,则返回空字符串 ("")。

FILTER 函数 - 按产品 (Apple) 筛选区域

语法

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 和乘法运算符 (*),以返回数组范围 (A5:D20) 中包含“Apples”且位于 East 区域的所有值。

用于返回多个条件并排序的 FILTER

在本例中,我们将以前的 FILTER 函数与 SORT 函数结合使用,以返回数组范围 (A5:D20) ( Apples AND 位于东部区域)中的所有值, 然后按降序对单位进行排序: =SORT (FILTER (A5:D20, (C5:C20=H1) * (A5:A20=H2) ,“”) ,4,-1)

配合使用 FILTER 和 SORT 函数,以返回数组范围 (A5:D20) 中包含“Apples”且位于 East 区域的所有值,然后对 Units 进行降序排序。

在本例中,我们将 FILTER 函数与加法运算符 (+) 一起使用,以返回数组范围 (A5:D20) Apples 或 位于东部区域的所有值, 然后按降序对单位进行排序: =SORT (FILTER (A5:D20, (C5:C20=H1) + (A5:A20=H2) ,“”) ,4,-1)

配合使用 FILTER 和 SORT - 按产品 (Apple) 或区域(East)筛选

请注意,这些函数都不需要绝对引用,因为它们仅存在于一个单元格中,并将其结果溢出到相邻单元格。

需要更多帮助吗?

你随时可以在 Excel 技术社区 中咨询专家或在 社区中获取支持。