一、FILTER函数定义
在 Excel 中,FILTER函数用于根据指定条件筛选区域或数组,并返回符合条件的所有记录(行或列)。它是动态数组函数,结果会自动溢出到相邻单元格。
基本语法
=FILTER(数组, 包含条件的数组, [未找到匹配项时返回的值])
参数说明
- 数组(必需):
要筛选的原始数据区域(可以是单行、单列或多行列区域)。 - 包含条件的数组(必需):
用于判断的条件区域,其行数或列数必须与 “数组” 参数一致。条件可以是比较运算符(>, <, =, >=, <=, <>)可以使用逻辑运算符(AND、OR,但需用*表示AND,+表示OR) - [未找到匹配项时返回的值](可选):
当没有符合条件的结果时,返回指定内容(如文本"无结果"或空值"")。若省略,会返回#CALC!错误。
二、FILTER函数的应用
2.1FILTER函数单表查询
使用FILTER函数从测试数据中抓取对应销售人员的销售地区,并通过TRANPOSE转置函数实现对结果数据的水平呈现。
=TRANSPOSE(FILTER(B:B,A:A=D2,""))
使用FILTER函数从测试数据中抓取对应销售人员的销售地区,并通过TOROW函数实现对结果数据的水平呈现。
=TOROW(FILTER(B:B,A:A=D7,""))
使用FILTER函数从测试数据中抓取对应销售人员的销售地区,并通过TRANPOSE转置函数,再通过TEXTJOIN函数将结果数据合并到一个单元格中,查询数据通过分号隔开。
=TEXTJOIN(";",,TRANSPOSE(FILTER(B:B,A:A=D12,"")))
2.2 FILTER函数多表合并查询
sheet1、sheet2、sheet3分别存放着客户资料,案例通过VSTACK函数将3张表单数据拼接后,再通过查询函数查找符合条件的客户资料。
以下为对sheet1~sheet3表数据使用VSTACK函数拼接后,再通过FILTER函数嵌套使用查询匹配符合条件的客户资料。
=FILTER(VSTACK(Sheet1:Sheet3!B1:E100),VSTACK(Sheet1:Sheet3!A1:A100)=A18,"")
以下为对sheet1~sheet3表数据使用VSTACK函数拼接后,再通过VLOOK函数数组嵌套使用查询匹配符合条件的客户资料。
=VLOOKUP(A2,VSTACK(Sheet1:Sheet3!A1:E100),{2,3,4,5},0)
以下为对sheet1~sheet3表数据使用VSTACK函数拼接后,再通过XLOOKUP函数嵌套使用查询匹配符合条件的客户资料。
=XLOOKUP(A10,VSTACK(Sheet1:Sheet3!A1:A100),VSTACK(Sheet1:Sheet3!B1:E100),"")
2.3 FILTER函数过滤无用表头和空数据
下表为通过VSTACK函数从sheet1至sheet3表拼接的客户资料,从数据中存在重复的表头数据与空单元格带过来的显示为0的数据,本案例将使用FILTER函数过滤掉漂色的重复表头数据和空单元格带过来显示为0的数据。
=VSTACK(Sheet1:Sheet3!A1:E15)
图12为使用FILTER函数对图11 使用VSTACK函数对3表合并数据重复表头数据和空单元格带过来显示为0数据的过滤。
=FILTER(A:E,(A:A<>A1)*(A:A<>0))
2.4 总结
a、选择多表对应区域时,手指要按住键盘上的 Shift 键,二次框选数据区域(如:VSTACK(Sheet1:Sheet3!B1:E100));
b、当使用FILTER函数过滤源表单空单元格时,后面的过滤条件就应该为 <>""(图12)。