乐于分享
好东西不私藏

Excel FILTER 函数从入门到精通 · 12个实战案例详解

Excel FILTER 函数从入门到精通 · 12个实战案例详解

一个让 Excel 筛选效率翻倍的「神级函数」

动态数组· 一键提取 · 自动刷新

⚡ 版本要求

仅适用于 Microsoft 365、Excel 2021 及更高版本、Excel 网页版。

Excel 2019 及更早版本不支持此函数。

01  函数语法速览

FILTER 函数的核心作用是「动态提取」:根据设定的条件从数据区域中筛选数据,一旦源数据变化,结果自动刷新。

=FILTER(数组, 条件, [为空时返回值])

数组需要筛选的数据区域

条件筛选的逻辑判断(如 A1:A10="苹果")

为空时返回值可选。当没有符合条件的数据时,返回的自定义内容(如"无匹配数据")

02  基础用法:单条件筛选

实例 1:按文本条件筛选

场景有一份销售数据表(A5:E15),想筛选出"产品"列(C列)等于"苹果"的所有记录。

公式

=FILTER(A2:E15, C2:C15="苹果", "无匹配数据")

找不到"苹果"时返回"无匹配数据",否则自动溢出显示所有匹配行。

实例 2:按数值条件筛选

场景筛选"销售额"列(D列)大于 3000 的所有记录。

公式

=FILTER(A2:E15, D2:E15>3000, "无匹配数据")

支持所有标准比较运算符:> < >= <= <>

实例 3:按日期条件筛选

场景筛选"日期"列(B列)在 202687之后的所有记录。

公式

=FILTER(A2:E15,A2:A15>DATE(2026,8,7)"无匹配数据")

日期条件建议用 DATE() 函数构建,避免文本格式导致匹配失败。

03  进阶用法:多条件组合筛选

实例 4:多条件"且"逻辑(AND)

场景筛选"产品"为"苹果"且"区域"为"东部"的所有记录,两个条件必须同时满足。

公式

=FILTER(A2:E15,(D2:D15="苹果")*(C2:C15="东部"),"无匹配")

乘号 * 表示"且"逻辑,所有条件必须同时成立才会被提取。

实例 5:多条件"或"逻辑(OR)

场景筛选"产品"为"苹果"或者"区域"为"东部"的记录,满足任一条件即被提取。

公式

=FILTER(A2:E15,(D2:D15="苹果")+(C2:C15="东部"),"无匹配")

加号 + 表示"或"逻辑。注意:每个条件都必须加上括号 ()。

实例 6:混合"且"与"或"逻辑

场景筛选"(产品=苹果 且 区域=东部)"或"(销售额>10000)"的记录。

公式

=FILTER(A2:E15,((D2:D15="苹果")*(C2:C15="东部"))+(E2:E15>2500),"无匹配")

通过括号控制运算优先级:先计算"且"(乘法),再计算"或"(加法)。

04  高级用法:结合其他函数

实例 7:提取重复数据所在整行

场景数据在 A2:F15 区域,A列为ID。提取所有重复ID对应的整行数据(包括日期部门区域水果销售额等所有列)。

公式

=FILTER(A2:E15,COUNTIF(D2:D15,D2:D15)>1)

COUNTIF 检查A列每个ID出现次数,大于1说明重复,FILTER 提取对应整行。

实例 8:提取重复数据中的特定列

场景只需提取重复编码对应的"部门"(C列)"区域"(D列)和"水果"(E列),不需要其他列。

公式

=FILTER(HSTACK(C2:C15,D2:E15),COUNTIF(A2:A15,A2:A15)>1)

HSTACK函数连接不同区域;将需要提取的列用逗号组合起来,作为 FILTER 的第一个参数。

实例 9:提取并去重

场景只想要重复编码对应的不重复记录(不管重复了几次,只要出现就列一次)。

公式

=UNIQUE(FILTER(A2:F15,COUNTIF(A2:A15,A2:A15)>1))

外层嵌套 UNIQUE 函数,对筛选结果自动去重。

实例 10:筛选后按某列排序

场景筛选"苹果+东部"记录后,按"销售额"(第4列)降序排列。

公式

=SORT(FILTER(A2:E15,(D2:D15="苹果")*(C2:C15="东部")),5,-1)

SORT 第2个参数指定按第几列排序,-1 表示降序(1 表示升序)。

实例 11:使用 CHOOSECOLS 提取特定列

场景"区域"为""且"销售额">"3000"的条件下,只提取"部门"(第2列)和"水果"(第4列)。

公式

=FILTER(CHOOSECOLS(A2:E15,2,4),(C2:C15="东部")*(E2:E15>3000),"无匹配数据")

CHOOSECOLS 先从原始数据中挑选指定列,然后 FILTER 对这些列进行条件筛选。

实例 12:结合单元格引用实现动态查询

场景把查询条件写在单元格里,修改条件值即可自动刷新结果。"区域"写在 G2"3000"写在 G3

公式

=FILTER(A2:E15,(C2:C15=G2)*(E2:E15>G3),"无匹配数据")

条件引用了 H1 和 H2 单元格,只需修改这两个单元格的值,筛选结果自动更新。

05  常见问题与注意事项

1. 版本兼容性:FILTER 函数仅适用于 Excel 365、Excel 2021 及更高版本。老版本输入会提示 #NAME? 错误。

2. 区域对齐:FILTER 的第一个参数(提取范围)和第二个参数(条件范围)的行数必须完全一致,否则会返回 #VALUE! 错误。

3. 合并单元格:如果原始数据中有合并单元格,FILTER 函数可能出错,请确保数据源是标准清单格式。

4. 空值处理:使用整列引用时(如 A:F),务必加上非空条件 (A2:A<>""),否则会把大量空白行也当成重复数据提取出来。

5. 溢出范围:FILTER 结果会自动"溢出"到相邻单元格,确保结果区域下方和右方有足够空白空间,否则会被 #SPILL! 错误阻断。

6. 性能优化:避免在大数据量(超过10万行)时使用整列引用,建议将范围限定在实际数据区域内,以提升计算速度。

06  速查表:8种常用公式模板

功能

公式模板

单条件筛选

=FILTER(范围, 条件, "无匹配")

多条件"且"

=FILTER(范围, (条件1)*(条件2), "无匹配")

多条件"或"

=FILTER(范围, (条件1)+(条件2), "无匹配")

筛选+排序

=SORT(FILTER(范围, 条件), 列号, -1)

筛选+去重

=UNIQUE(FILTER(范围, 条件))

筛选特定列

=FILTER(CHOOSECOLS(范围, 列号1, 列号2), 条件)

提取重复行

=FILTER(范围, COUNTIF(ID列, ID列)>1)

动态条件查询

=FILTER(范围, (列=单元格引用), "无匹配")

💡 提示:以上公式中的"范围"请根据实际数据区域调整。如果数据超过1000行,建议将范围扩大至实际数据行数,或直接引用整列(如 A:F),但需注意性能影响。