FILTER函数的强大之处就是按条件筛选,理解了这个意思,就会把思路打开,计划员日常工作中是不是经常需要筛选,特别是有些中小工厂没有上ERP的,还在用Excel做订单登记表,或者用Excel做仓库现存量明细表的。
在需要录入查询条件,得出对应的结果的时候,就应该考虑用FILTER函数建模。因为FILTER函数只对源数据进行查询,不影响源数据,而且当源数据有更新的话,还可以实现实时更新。
举例说明:某小工厂用Excel表格做的资材登记表,需要查询多条件的材料结果,需要分别筛选多次,如查询包含平头的螺丝钉在五金仓有多少数量?

因为查询是一个高频操作,不想每次都点击筛选数据的话,可以考虑用FILTER函数进行建模。在建模前,理解单条件筛选、多条件筛选、模糊查询。
单条件查询
查询背景:需要按贷品代号精准的查询,并返回对应的代号的库存数量;
函数公式:=VSTACK(A1:F1,FILTER(A:F,A:A=H2));

函数说明:单条件可以设置多个,这里为了方便显示,放在一个工作页面内,后续还可以在边上,录入仓位查询,采购员查询等;
函数注意:查询条件是必填项,如果不填写的话,筛选结果就是返回整个A列的空行,接近100多万行。如需要避免的话,可以把筛选结果和筛选条件范围选中一定的范围,如A1:A2000,这样的指定范围。还有就是直接用超级表也是个非常不错的选择。
下图函数:=VSTACK(A1:F1,FILTER(A:F,F:F=H9,"无结果"))

多条件查询
在进行多条件查询前需要了解的就是布尔逻辑,通俗点说就是并且(AND)和或者(OR),如果需要查询条件1和条件2,这样的查询结果就是并的关系,同时满足。对应FILTER函数的查询条件就是用“*”代表并,用“-”代表或者。

查询背景:需要按采购员和仓位查询对应的物料的库存数量明细;
函数公式:=VSTACK(A1:F1,FILTER(A:F,(F:F=I2)*(E:E=H2),"无结果"))
函数说明:多条件只需要用括号把每个条件括起来,有多少就乘多少就可以了,同时如果是或者就用加号。这些查询条件原则上只需要写一次就可以了,后续配合数据验证,可以创建下拉窗口筛选。

模糊查询
模糊查询就是有时候记不起代号,只记得某个字段,如描述中包含平头的现存量明细表,类似筛选是包含某个条件。如果需要用FILTER函数来实现是做不到,因为此函数不支持模糊查询,需要嵌套别的函数。为了方便理解,先分开写。
步骤1:录入=FIND(I2,B2:B17),查询对应条件,并返回对应的位置。
步骤2:录入=ISNUMBER(I4#),判断是否为数值,并返回TRUE或者FALSE; 步骤1中如果查询到符号条件的关键字,就一定会返回一个起始数字,所以会返回TRUE结果,没有的就是错误,对应的结果就是FALSE。
步骤3:录入合并后的公式:
=FILTER(A2:F17,ISNUMBER(FIND(H2,B2:B17)))
就得到最终的效果如下图:

知识点整理
这个函数配合UNIQUE、SORT、CHOOSECOLS、TOROW等函数有着非常好的二次升级效果。学习这个函数最好是慢慢来,不着急,仔细思考一下,平常在生产计划的排程工作中哪些工作可以用这个函数来建立标准模板,建立好后,是否能够大大的提高自己的工作效率。
