本文介绍 Microsoft Excel 中 FILTER 函数的公式语法和用法。

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

你的浏览器不支持视频。请安装 Microsoft Silverlight、Adobe Flash Player 或 Internet Explorer 9。

注意: 2018 年 9 月 24 日:FILTER 函数是多种 beta 功能之一,当前仅面向一部分 Office 预览体验成员提供。我们将在未来的几个月里继续优化这些功能。准备就绪后,我们会向所有 Office 预览体验成员和 Office 365 订阅者发布该功能。

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

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 当前不支持空数组。

  • Excel 对工作簿之间的动态数据提供有限支持,并且仅当这两个工作簿时都处于打开状态时才支持此方案。 如果关闭源工作簿,刷新时,任何链接的动态数组公式都将返回 #REF! 错误

示例

注意: 此处所示的示例可用于此可下载的工作簿:FILTER 函数示例。

用于返回多个条件的 FILTER

在此示例中,我们使用乘法运算符 (*),以返回数组范围 (A5:D20) 中包含“Apples”位于 East 区域的所有值:=FILTER(A5:D20,(C5:C20=H1)*(A5:A20=H2),"")

配合使用 FILTER 和乘法运算符 (*),以返回数组范围 (A5:D20) 中包含“Apples”且位于 East 区域的所有值。

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

在此示例中,我们配合使用之前的 FILTER 函数和 SORT 函数,以返回数组范围 (A5:D20) 中包含“Apples”位于 East 区域的所有值,然后对 Units 进行降序排序:=SORT(FILTER(A5:D20,(C5:C20=H1)*(A5:A20=H2),""),4,-1)

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

在此示例中,我们配合使用 FILTER 函数和加法运算符 (+),以返回数组范围 (A5:D20) 中包含“Apples”位于 East 区域的所有值,然后对 Units 进行降序排序:=SORT(FILTER(A5:D20,(C5:C20=H1)+(A5:A20=H2),""),4,-1)

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

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