跳转至

FILTER 函数

函数概述

FILTER 函数用于按条件筛选数据并返回匹配结果,属于动态数组函数。它会把满足条件的行(或列)“溢出”到相邻单元格区域中,适合做数据看板、明细查询、分类清单等场景。

典型用途包括:

  • 按部门/地区/状态筛选订单明细
  • 按日期范围筛选记录
  • 多条件组合筛选(AND/OR)
  • 无匹配时返回自定义提示

基础语法

=FILTER(array, include, [if_empty])

参数说明

参数名 是否必填 含义 常见写法
array 必填 要返回的数组或区域 A2:D100
include 必填 筛选条件数组,TRUE 保留,FALSE 排除 B2:B100="华东"
if_empty 可选 无结果时返回的内容 "无匹配"

补充说明:

  • include 必须与 array 在行数或列数上可对齐:若 array 是 99 行数据,则 include 也应是 99 行的逻辑结果。
  • include 可以由多个条件组合得到:用 * 表示 AND,用 + 表示 OR(配合比较表达式)。

基础用法示范

下例假设数据区域为 A1:E10,表头在第 1 行,数据从第 2 行开始: A=订单号,B=地区,C=部门,D=金额,E=日期

示例1 单条件筛选

按“地区=华东”筛选整行记录:

=FILTER(A2:E10, B2:B10="华东", "无匹配")

说明:返回 A2:E10 中所有地区为“华东”的行。


示例2 多条件筛选

按“地区=华东”且“部门=销售”筛选:

=FILTER(A2:E10, (B2:B10="华东")*(C2:C10="销售"), "无匹配")

说明:* 会将两个逻辑数组做“同时满足”的合并(AND)。


示例3 或条件筛选

按“地区=华东”或“地区=华南”筛选:

=FILTER(A2:E10, (B2:B10="华东")+(B2:B10="华南"), "无匹配")

说明:+ 表示 OR;若担心出现大于 1 的值,也可用 >0 规范化:

=FILTER(A2:E10, ((B2:B10="华东")+(B2:B10="华南"))>0, "无匹配")

示例4 数值区间筛选

筛选“金额≥1000 且 金额≤5000”:

=FILTER(A2:E10, (D2:D10>=1000)*(D2:D10<=5000), "无匹配")

说明:区间筛选常用两个比较表达式做 AND 组合。


示例5 日期范围筛选

筛选“日期在 2026-01-01 到 2026-01-31”:

=FILTER(A2:E10, (E2:E10>=DATE(2026,1,1))*(E2:E10<=DATE(2026,1,31)), "无匹配")

说明:用 DATE 生成边界日期更稳定,避免文本日期带来的比较偏差。


示例6 只返回指定列

只返回“订单号、金额”两列,并筛选“部门=技术”:

=FILTER(CHOOSECOLS(A2:E10,1,4), C2:C10="技术", "无匹配")

说明:先用 CHOOSECOLS 取列,再用 FILTER 按条件筛选结果集。


总结

FILTER 函数的核心是:从 array 中按 include 给出的 TRUE/FALSE 结果保留数据,并能在无匹配时用 if_empty 提供友好提示。掌握以下要点就能覆盖多数场景:

  • =FILTER(array, 条件, "无匹配") 是最常用模板
  • 多条件 AND:(条件1)*(条件2)
  • 多条件 OR:(条件1)+(条件2)((条件1)+(条件2))>0
  • 区间/日期筛选本质也是多个比较条件组合
  • 可与 CHOOSECOLS、SORT、UNIQUE 等搭配,构建更强的动态查询表