哈喽,大家好。
今天来分享一个万能的Excel查询模板公式,即任意一个关键字就可以将数据查找出来。
譬如可以查找编号包括7的人,所有姓赵的人,所有部门是财务的人,所有大专学历的人等等。
实现这种任意关键字查找,并不需要很复杂的步骤,或者VBA代码之类的,只需要一个公式即可。
完整公式为:
=IF(K2="","",FILTER(A:I,IFERROR(SEARCH(K2,A:A),0)+IFERROR(SEARCH(K2,B:B),0)+IFERROR(SEARCH(K2,C:C),0)+IFERROR(SEARCH(K2,D:D),0)+IFERROR(SEARCH(K2,E:E),0)+IFERROR(SEARCH(K2,F:F),0),"无符合条件值"))
千万不要看着公式很长就被劝退了,其实要理解这个公式只需要三步,下面,跟我们一起来解读一下吧!
第一阶段:关键字单列查找
关键字查找,意味条件为包含关系,就是查找包含关键字字符的数据。因此,通常需要借用SEARCH或者FIND函数来确定是否包含条件字符。
关键字单列查找,就是用关键字与某一列数据进行包含判断查找。
例如,只在姓名列数据中进行查找关键字,公式为:
=FILTER(A:I,IFERROR(SEARCH(K2,C:C),),0)
SEARCH函数的作用是在一个文本值中查找另一个指定文本值(不区分大小写)的位置,得到结果是一个数字。
例如:=SEARCH(K2,C2:C20)得到如图结果,表示在范围C2:C20的每个单元格都找一下K2的内容(娜)是否存在,如果没有返回错误值,如果有则返回娜在对应单元格的位置(第几个字)。
再添加一个IFFERROR函数,将错误值变为0(后面有用),公式为=IFERROR(SEARCH(K2,C2:C20),0)
FILTER的第二参数本来应该是一个逻辑值(条件比较得到的就是逻辑值),但是在Excel中,逻辑值和数字之间有个对应关系,0相当于FALSE,非零数相当于TRUE。因此SEARCH得到的非零值就相当于符合查找条件的值。
所以公式=FILTER(A:I,IFERROR(SEARCH(K2,C:C),0))就能按照关键字进行查找,这一点一定要想明白,假如就是想不明白的话,记下公式套路就行吧。
至此,我们实现了关键字单列查找的结果,距离最终目标之差一步。
第二阶段:关键字多列查找。
关键字多列查找,就是用关键字分别与多列数据进行包含判断查找,只要关键字被多列数据的任何一列包含,就会查找到相应数据。因此各列的包含判断是「或」关系,用加号来组合它们的判断结果。
譬如:在上面姓名列查找的基础上,我们增加部门列查找。
完整的公式为:=FILTER(A:I,IFERROR(SEARCH(K2,B:B),0)+IFERROR(SEARCH(K2,C:C),0),0)
如果还要按照其他列查找的话,只需要继续加IFERROR和SEARCH这部分即可。
第三阶段:解决条件为空等的查找让公式更人性化
当前公式,如果条件为空,会返回所有值;如果没有符合条件的,返回是0。
所以需要调整公式,让条件为空时返回空;让没有符合条件的,显示为「无符合条件值」。
最终公式:
=IF(K2="","",FILTER(A:I,IFERROR(SEARCH(K2,A:A),0)+IFERROR(SEARCH(K2,B:B),0)+IFERROR(SEARCH(K2,C:C),0)+IFERROR(SEARCH(K2,D:D),0)+IFERROR(SEARCH(K2,E:E),0)+IFERROR(SEARCH(K2,F:F),0),"无符合条件值"))
好的,以上就是今天的内容,关于FILTER函数的基础用法,大家可以点击下方链接查看:
温馨提示:
凭借任意一个关键词查询数据的优点是操作简单;缺点是不够精准,尤其是在包含多列数字(含日期)的表格中用数字查询,准确度低。
粉丝福利:免费课程,扫码领取学习