核心结论是 filter 是 Excel 365 以及 Excel 2021 版本自带的动态数组函数,作用是按照设定条件,从指定区域里面筛选出符合条件的数据,结果会自动溢出到相邻单元格,也就是俗称的 spill 溢出效果,不需要手动下拉填充,旧版 2019 及更早版本没有这个函数,无法直接使用,filter 函数最大优势就是一键动态筛选,当源数据修改之后,筛选结果会自动更新,适合做查询表、分类汇总、多条件筛选,是现在 Excel 数据处理高频函数,重点要掌握基础语法、单条件、多条件、无匹配结果自定义提示,还有 CALC! 报错解决方法。
基础语法
=FILTER(数据区域, 筛选条件, [无结果时的显示值])
| 参数 | 说明 |
|---|---|
| 数据区域 | 需要筛选的整块数据源,可以是多列多行 |
| 筛选条件 | 判断表达式,返回 TRUE 或者 FALSE,符合条件保留 |
| 无结果时的显示值 | 可选参数,如果没有匹配数据,默认报 #CALC!,加上这个参数就可以自定义文字提示 |
常用示例
1 单条件筛选
筛选 A2:A10 里面等于 “北京” 对应的 B 列数据
=FILTER(B2:B10,A2:A10="北京")
2 多条件同时满足(并且,用乘号 )
同时满足城市是北京,金额大于 1000
=FILTER(A2:C10,(A2:A10="北京")(C2:C10>1000))
3 多条件满足其一(或者,用加号 +)
城市是北京 或者 上海
=FILTER(A2:C10,(A2:A10="北京")+(A2:A10="上海"))
4 增加无匹配自定义提示
=FILTER(A2:C10,A2:A10="广州","没有匹配数据")
报错与注意事项
第一 CALC! 错误,绝大多数原因是筛选之后没有任何符合条件的数据,解决办法就是补上第三个可选参数,设置提示文字。
第二 溢出区域被占用,如果筛选结果要填充的单元格里面已经有别的内容,会出现 SPILL! 报错,清空溢出区域单元格即可。
第三 版本限制,Excel 2019 以及更早版本不支持动态数组,filter 函数不能使用,WPS 新版已经支持该函数,老版本 WPS 同样无法运行。
第四 条件区域和数据区域行列数量必须保持一致,行列不匹配会直接报错。
学习操作步骤
第一步确认软件版本,打开 Excel 确认是 365 或者 2021,或者新版 WPS,确认支持 filter 函数。
第二步选择输出起始单元格,输入基础语法,先练习单条件筛选,观察结果自动溢出。
第三步练习多条件,理解乘号代表并且,加号代表或者,这是多条件核心逻辑。
第四步添加第三个参数,解决 CALC! 报错,让表格更友好。
第五步测试修改源数据,验证筛选结果是否自动刷新,理解动态数组特性。
第六步处理 SPILL! 溢出报错,清空占用单元格,排查区域行列是否匹配。
综合来看,filter 函数是动态筛选利器,替代传统高级筛选,适合动态查询看板,核心就是记住语法,区分并且和或者的运算符,重点解决 CALC! 和 SPILL! 两个高频报错,旧版本软件如果需要实现同类效果,只能用高级筛选或者数组公式替代。
【相关 FAQ】
问题 1 filter 函数用法,Excel2019 可以用 filter 函数吗
回答 1 filter 函数用法里面,Excel2019 不支持动态数组,无法使用 filter 函数,需要升级到 Excel365、Excel2021 或者新版 WPS。
问题 2 filter 函数用法,多条件并且为什么要用乘号
回答 1 filter 函数用法中,乘号 代表逻辑并且,两个条件同时为 TRUE 才保留数据,加号 + 代表逻辑或者,满足任意一条条件就保留。
问题 3 filter 函数用法,出现 SPILL! 是什么原因
回答 1 filter 函数用法里 SPILL! 代表溢出区域已有内容阻挡结果,清空目标溢出单元格就可以恢复正常。
问题 4 filter 函数用法,筛选出来的数据是原始数据副本吗
回答 1 filter 函数用法生成的是动态引用结果,源数据修改,filter 输出结果会自动同步更新,不是静态复制粘贴的数据。
【免责申明】
本文内容仅作为 Excel 函数学习科普参考,不同版本 WPS 与 Excel 功能细节存在差异,实际操作以当前软件版本为准。


