大家好,今天要解决的问题是在使用FILTER函数公式进行查找的时候,如果同时存在并且和或者关系的多条件的时候应该怎么查找?如下图所示,要把技术部或者市场部年龄大于24岁的员工的信息给筛选出来:
在目标单元格中输入公式:
=FILTER(B2:E11,((C2:C11=’技术部’)+(C2:C11=’市场部’))*(E2:E11>24))
回车确定之后就可以将满足条件的员工信息给筛选出来:
接下来逐步解析这个公式:
FILTER函数的第一参数解析:
B2:E11,这是待筛选的数据范围,也就是我们最终要返回的数据所在的区域
FILTER函数的第二参数解析:
((C2:C11=’技术部’)+(C2:C11=’市场部’))*(E2:E11>24) 这是筛选条件,它是由多个条件组合而成的。
继续拆解这个条件:
条件1:((C2:C11=’技术部’)+(C2:C11=’市场部’))
(C2:C11=’技术部’) 这个条件的意思是检查C列也就是部门这一列中的每个单元格是否等于“技术部”,如果等于技术部返回TRUE,否则返回FALSE,最后返回一个由TRUE或者FALSE组成的和C列长度相同的逻辑数组:
同样的道理 (C2:C11=’市场部’) 这个条件的意思是检查C列这一列中的每个单元格是否等于“市场部”,如果等于市场部,返回逻辑值TRUE,否则返回FALSE,最后返回一个由TRUE或者FALSE组成的和C列长度相同的逻辑数组:
将两个公式相加 ((C2:C11=’技术部’)+(C2:C11=’市场部’)) “+”在这里的作用。
首先我们得有一个基础的概念,就是在EXCEL中,任何非零值在逻辑条件中都被视为TRUE,只有0被视为FALSE。
将两列逻辑值数组相加:
就会得到一组数组,可以看到,如果某一行在C列是技术部或者市场部,求和的结果为1,也就是逻辑值TRUE,只有某一行中既不是技术部也不是市场部的时候,求和的结果才是0。也就是只要满足其中任意一个条件,逻辑值都是TURE,也就是条件成立:
继续解析公式 (E2:E11>24) 这个公式的意思是说检查E列中每个单元格的值是否大于24,
结果返回一个TRUE/FALSE数组:
接着将两组条件相乘:((C2:C11=’技术部’)+(C2:C11=’市场部’))*(E2:E11>24)

得到的结果是:
可以看到,只有两组条件都为逻辑值TRUE时,返回的结果才是TRUE,其他情况(比如1*0,0*1,0*0)得到的值都为0也就是FALSE。
所以,在最终的条件数组中,只有同时满足以下两个条件的行才会返回TRUE
1.部门是“技术部”或“市场部”。
2.E列的值大于24。
接着FILTER函数根据最后生成的逻辑数组,返回逻辑值为TRUE对应的行的数据:
FILTER函数具有数组自动溢出功能,会自动填充至其他空白单元格,不需要在向下拖拉公式。
最后我们快速的思考一下整个公式的工作流程:
=FILTER(B2:E11,((C2:C11=’技术部’)+(C2:C11=’市场部’))*(E2:E11>24))
1.FILTER函数会遍历B2:E11这个区域中的每一行:
对于每一行,检查组合条件是否为TRUE
如果是,则保留该行
如果不是,则跳过该行
第二行:技术部(满足条件1)且28>24(满足条件2)–组合条件为TRUE 保留
第三行:市场部(满足条件1)且25>24(满足条件2)–组合条件为TRUE 保留
第四行:财务部(不满足条件1)但30>24(满足条件2)–组合条件为FALSE 跳过
第五行:人事部(不满足条件1)但35>24(满足条件2)–组合条件为FALSE 跳过
第六行:技术部(满足条件1)且26>24(满足条件2)–组合条件为TRUE 保留
第七行:销售部(不满足条件1)但29>24(满足条件2)–组合条件为FALSE 跳过
第八行:运营部(不满足条件1)但27>24(满足条件2)–组合条件FALSE 跳过
第九行:客服部(不满足条件1)但32>24(满足条件2)–组合条件为FALSE 跳过
第十行:技术部(满足条件1)且31>24(满足条件2)–组合条件为TRUE 保留
第十一行:市场部(满足条件1)但24=24(不满足条件2)–组合条件为FALSE 跳过
最终FILTER函数返回满足条件的所有航 第2、3、6、10行
今天的分享到此结束了,有什么不理解的地方,可以打在评论区一起讨论一下。
如果对您有用的话,帮忙点个赞吧!