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