還在手動篩選數(shù)據(jù)?試試filter這個數(shù)組函數(shù),真香!
有些業(yè)務需要經(jīng)常手動篩選指定條件數(shù)據(jù),雖然操作上不是很繁瑣,但就是小操作,很容易讓你熬夜加班。
在Microsoft 365和WPS最新版中,上線了Filter這個動態(tài)篩選函數(shù)。
函數(shù)作用就是,根據(jù)指定條件,對目標數(shù)據(jù)進行篩選,將最終的篩選結果直接展現(xiàn)出來。
「所以好處是什么?」 如果使用filter函數(shù),你只需要一次創(chuàng)建好函數(shù)模板,后期更新數(shù)據(jù)庫,就能自動完成所有篩選操作。
「那么如何使用函數(shù)公式有條件的動態(tài)篩選數(shù)據(jù)?」
本期用「filter函數(shù)」和「if函數(shù)」分別實現(xiàn)下面的篩選需求。
單條件篩選
多條件同時滿足或只滿足任意條件
要么同時滿足某些條件,要么符合指定條件
點贊收藏,根據(jù)你的需要選擇合適的方法。
1. Filter函數(shù)怎么用?
函數(shù)參數(shù)如下:
=FILTER(array,include,[if_empty])
Microsoft 365,Excel 2021以及WPS最新版支持該函數(shù)
第一個參數(shù)是待篩選的數(shù)據(jù)區(qū)域或者數(shù)組,第二個是一個一維布爾值數(shù)組,這個待會詳細介紹,第三個是當沒有符合條件數(shù)據(jù)時返回的值。
以這張信息表為例:
我們需要篩選提取所有性別為「男」的數(shù)據(jù),使用公式如下:
=FILTER(A2:C8,B2:B8="男")
可以注意到,函數(shù)第二個參數(shù)使用了B2:B8="男"這樣的條件式,這個條件式的結果是這樣的:
符合條件的,返回結果True,不符合則是False。由此構成了一組一維的布爾值數(shù)組。
這個數(shù)組有以下幾個條件:
數(shù)組必須是單行或者是單列的一維數(shù)組;
如果要篩選行,則是單列數(shù)組,篩選列則是單行數(shù)組。
數(shù)組大小必須與待篩選的數(shù)組大小保持一致。
例如待篩選數(shù)組要篩選行,則布爾值數(shù)組只能是單列且行數(shù)與待篩選數(shù)組行數(shù)一致的一維數(shù)組。
數(shù)組內(nèi)容必須是布爾值,也就是True或者False(1,0等數(shù)字也可以)
由此,使用filter函數(shù)的關鍵,就是如何生成符合條件的布爾值數(shù)組,也就是如何輸入條件。
下文提供常見的filter函數(shù)篩選條件案例,可參照學習。
1.1 filter單條件
按行篩選出年齡大于60的數(shù)據(jù)。
=FILTER(A2:C8,C2:C8>60)
按列篩選出姓名和年齡。
=FILTER(A2:C8,{1,0,1})
條件式中的{1,0,1}就是一組單行的布爾值數(shù)組,分別對應姓名、性別和年齡,其中大于等于1則提取保留,等于0則剔除,此處直接寫了條件式結果。
1.2 filter同時滿足多個條件
按行篩選性別女且年齡大于50的數(shù)據(jù)。
=FILTER(A2:C8,(B2:B8="女")*(C2:C8>50))
注意多個條件同時滿足情況下,使用 * 將多個條件相乘,此處不適用and函數(shù),是由于and函數(shù)的最終結果是唯一值,不是數(shù)組。
把條件寫在單元格內(nèi),最終結果如下圖所示。只有全部滿足,結果才為1。
1.3 filter滿足多個條件中的任意一個條件
按行篩選性別女或年齡大于50的數(shù)據(jù)。
=FILTER(A2:C8,(B2:B8="女")+(C2:C8>50))
與同時滿足條件相比,唯一的區(qū)別就是多個條件之間使用+相加,此時,只需有一個滿足,那么結果至少會大于1。
1.4 filter同時滿足兩個條件或滿足其他任意一個條件
按行篩選年齡小于等于60且性別為女,或者年齡小于30的數(shù)據(jù)
=FILTER(A2:C8,((B2:B8="女")*(C2:C8<=60))+(C2:C8<=30))
存在較為復雜的條件時,直接使用括號將對應條件合并成另一個新條件,再進行運算。
例如需求中的第一個且條件里的多個條件相乘,然后合并在一起與另一個條件相加做或條件。
2. 使用普通if函數(shù)代替實現(xiàn)filter函數(shù)效果
如果軟件版本沒有filter,也想實現(xiàn)類似的效果,可以使用if函數(shù)搭配數(shù)組公式實現(xiàn)。
當然,不支持動態(tài)數(shù)組的軟件版本,還是要按照原本的數(shù)組公式錄入方法進行使用。
數(shù)組公式使用方法
需提前選中承接數(shù)組公式結果的單元格區(qū)域
再輸入數(shù)組公式
最后需要按數(shù)組確認鍵 CTRL+SHIFT+回車 確認公式
具體使用,可以參考下方案例直接套用公式:
2.1 單條件篩選
=SORT(IF(B2:B8="男",A2:C8,""),,-1)
由于單獨使用if篩選,會導致不符合條件的數(shù)據(jù)變成空值,且留在原有的位置,因此使用sort函數(shù),將其按倒序排序,使其符合條件的值保留在上方。
不好的點在于最終會對結果數(shù)據(jù)進行排序,如果要不進行排序操作,直接剔除空值數(shù)據(jù)的做法會很復雜,不建議使用。
2.2 多條件篩選
同時滿足情況下用*鏈接所有條件,或條件情況下用+鏈接。這與filter的多條件用法保持一致。
=SORT(IF((B2:B8="男")*(C2:C8>60),A2:C8,""),,-1)
if函數(shù)篩選的其余情況基本與filter函數(shù)的使用條件一致,靈活創(chuàng)建條件式生成的布爾值,可以實現(xiàn)不同的效果。
比如在之前發(fā)布的unique函數(shù)文章中(可看主頁文章列表),我們就利用了match函數(shù)與row函數(shù)定位了不重復數(shù)據(jù)的位置。
由此,你也可以生成對應的布爾值數(shù)組,可以用來給if函數(shù),直接返回所有的不重復數(shù)據(jù),感興趣的同學,歡迎評論留言。