1. 单条件基础筛选
场景:筛选销量 >5000 的记录
公式:
=VSTACK(A1:D1,FILTER(A2:D9,D2:D9>5500))
解析:
A2:D9为需要筛选的数据区域,D2:D9>5500返回{TRUE;TRUE;FALSE;TRUE;FALSE;FALSE;FALSE;FALSE}作为筛选条件。
结果返回“TRUE”对应的A2:D9中的所有行。
VSTACK作用是为筛选得到的结果添加标题行。
- 多条件且关系
场景:筛选部门A且销量>5000的记录
公式:
=FILTER(A2:D9,(B2:B9="A")*(D2:D9>5500))
解析:
同时满足两个条件得到“TRUE*TRUE”结果返回1,这样两组条件相乘结果得到一个1与0组成的数组{1;1;0;0;0;0;0;0};
作为FILTER筛选条件时,0对应的行会被删除,保留非0数字对应的所有行。
3. 多条件或关系(OR)
场景:筛选「部门A或销量>5500的记录
公式:
=FILTER(A2:D9,(B2:B9="A")+(D2:D9>5500))
解析:
只要有一个或多个TRUE相加,结果一定返回一个非0数字,这样两组条件相加结果得到一个1与0组成的数组{2;2;0;1;0;1;0;0};
作为FILTER筛选条件时,0对应的行会被删除,保留非0数字对应的所有行。
4. 动态日期范围筛选
场景:筛选 2025年 1 月的记录
公式:
=FILTER(A2:D9,(B2:B9>=DATE(2025,1,1))*(B2:B9<=DATE(2025,1,15)))
解析:
DATE 函数构建销售日期,结果返回2025-1-1至2025-1-15期间的销售记录。
5. 结合 UNIQUE 去重筛选
场景:提取有人员销量大于6000的部门且去重
公式:
=UNIQUE(FILTER(B2:B9,D2:D9>6000))
解析:
筛选出符合条件的人员名单,再用UNIQUE去除重复值,结果返回 D 列“>6000”的部门名单,且不重复。
6. 嵌套 SORT 排序结果
场景:筛选后按销售额降序排列
公式:
=SORT(FILTER(A2:D9,(B2:B9="A")*(D2:D9>5500)),4,-1)
解析:
FILTER(A2:D9,(B2:B9="A")*(D2:D9>5500))筛选出A部门大于5500销售数据;
SORT(......,4,-1)4 表示按第 4 列(D 列)排序,-1 为降序。
7. 处理无结果时的错误提示
场景:无数据时显示无
公式:
=FILTER(A2:D9,D2:D9>7000,"无")
解析:
第三参数表示找不到对应数据时,返回指定结果“无”。
8.模糊匹配:筛选 B 列包含“A”的销售数据
公式:
=FILTER(A2:D9,ISNUMBER(SEARCH("A",B2:B9)))
解析:
SEARCH("A",B2:B9)查找A在数据区域B2:B9各文本字符串中对应的位置;
ISNUMBER(......)判断结果是否为数值,返回结果作为FILTER筛选的依据。
- 双重筛选:根据指定条件二次筛选
公式:
=FILTER(VSTACK(A1:D1,FILTER(A2:D9,D2:D9>5500)),ISNUMBER(XMATCH(A1:D1,{"部门","销量"})))
解析:
VSTACK(A1:D1,FILTER(A2:D9,D2:D9>5500))筛选出销量大于5500销售数据;
FILTER(......,ISNUMBER(XMATCH(A1:D1,{"部门","销量"})))中,
XMATCH(A1:D1,{"部门","销量"})查找表头在{"部门","销量"}对应的位置,再用ISNUMBER检测结果是否为数值,返回的结果作为二次筛选的条件,FILTER二次筛选出指"部门"、"销量"相应的数据。