Excel中特别有用的函数之Filter
今天继续介绍Excel中的新函数系列:FILTER。
就在准备这篇文章时,我又一次感受到了Excel新函数的威力,不得不说,包括我们前面介绍过的SORT,UNIQUE,今天介绍的FILTER在内的Excel新函数,让以前必须写很复杂的公式才能解决的问题变得轻而易举。
闲言碎语不多谈。直接来看这个函数吧!
语法
FILTER函数的语法如下:
这个函数有3个参数:
数组
这个参数就是准备进行筛选的整个数据区域(或数组)包括
这个参数的名称有点奇怪,其实是英文的直译(include,这个英文名字也不是那么直观)。这个参数是一个返回逻辑值TRUE/FALSE的判断,用来判断“数组”参数中的值是否满足条件,如果是TRUE,在结果中就会返回“数组”参数中对应的行(或列)[if_empty]
如果第二个参数的所有返回值都为FALSE,表示“数组”参数中并没有需要返回的行(或列),这时,就返回这个参数。如果这个参数被省略了,就返回空值。
用法
结合实例来看这些参数,理解的更清楚一些。
假设我们的数据如下:
如果我们希望在其中查找所有开发部参加的项目,就可以使用下面的公式:
=FILTER(B3:F9,C3:C9="开发部","未找到")
结果返回了两个项目。值得提醒的是,这个函数返回的是个动态数组。
如果我们将第二个参数的“开发部”写成了“开发1部”,结果就会返回第三个参数:
多个条件
FILTER函数的第二个参数实际上就是一个条件表达式,类似于IF函数的第一个参数。因此,就有多个条件的问题。我们下面通过两个例子来看看如何在FILTER函数中使用多个条件。
例1 两个同时成立的条件筛选
例如,我们希望返回项目名称是“李宁订货会项目”,并且由"咨询部"参加的项目
可以使用公式:
=FILTER(B3:F9,(B3:B9="李宁订货会项目")*(C3:C9="咨询部"),"未找到")
这个多个条件的写法我们在IF和SUMPRODUCT等函数中经常见到。
例2 一个条件成立即可的多条件筛选
例如,我们希望返回所有的“李宁订货会项目”和所有“咨询部”参加的项目。可以使用公式:
=FILTER(B3:F9,(B3:B9="李宁订货会项目")+(C3:C9="咨询部"),"未找到")
找不到时返回多项
在前面的例子中,我们看到,如果第二个参数返回值都是FALSE,筛选不出任何结果,就会返回第三个参数:
但是这个返回值容易造成误解:好像这个函数的返回值只占这一个单元格似的。实际上,正常情况下,这个函数返回一个区域,这个区域的宽度跟第一个参数的宽度是一致的。
为了避免这种情况,我们可以使用下面的方法让第三个参数返回多个值:
=FILTER(B3:F9,C3:C9="开发1部",{"项目未找到","部门未找到",0,0,0})
总结
FILTER函数还有一些很重要的应用。其中部分应用以前也可以实现,就是得用非常复杂的方法。现在,我们可以利用FILTER函数(和其他新函数)来简化这些应用。具体内容我们后面陆续为大家介绍。