今天繼續介紹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函數(和其他新函數)來簡化這些應用。具體内容我們後面陸續為大家介紹。
有話要說...