tft每日頭條

 > 科技

 > filter函數如何添加多個條件

filter函數如何添加多個條件

科技 更新时间:2024-12-22 20:32:31

filter函數如何添加多個條件(還在手動篩選數據)1

有些業務需要經常手動篩選指定條件數據,雖然操作上不是很繁瑣,但就是小操作,很容易讓你熬夜加班。

filter函數如何添加多個條件(還在手動篩選數據)2

在Microsoft 365和WPS最新版中,上線了Filter這個動态篩選函數。

函數作用就是,根據指定條件,對目标數據進行篩選,将最終的篩選結果直接展現出來。

「所以好處是什麼?」 如果使用filter函數,你隻需要一次創建好函數模闆,後期更新數據庫,就能自動完成所有篩選操作。

filter函數如何添加多個條件(還在手動篩選數據)3

「那麼如何使用函數公式有條件的動态篩選數據?」

本期用「filter函數」「if函數」分别實現下面的篩選需求。

  1. 單條件篩選

  2. 多條件同時滿足或隻滿足任意條件

  3. 要麼同時滿足某些條件,要麼符合指定條件

點贊收藏,根據你的需要選擇合适的方法。

1. Filter函數怎麼用?

函數參數如下:

=FILTER(array,include,[if_empty])

filter函數如何添加多個條件(還在手動篩選數據)4

圖片來自office支持

Microsoft 365,Excel 2021以及WPS最新版支持該函數

第一個參數是待篩選的數據區域或者數組,第二個是一個一維布爾值數組,這個待會詳細介紹,第三個是當沒有符合條件數據時返回的值。

以這張信息表為例:

filter函數如何添加多個條件(還在手動篩選數據)5

我們需要篩選提取所有性别為「男」的數據,使用公式如下:

=FILTER(A2:C8,B2:B8="男")

filter函數如何添加多個條件(還在手動篩選數據)6

可以注意到,函數第二個參數使用了B2:B8="男"這樣的條件式,這個條件式的結果是這樣的:

filter函數如何添加多個條件(還在手動篩選數據)7

符合條件的,返回結果True,不符合則是False。由此構成了一組一維的布爾值數組。

這個數組有以下幾個條件:

  1. 數組必須是單行或者是單列的一維數組;

如果要篩選行,則是單列數組,篩選列則是單行數組。

  1. 數組大小必須與待篩選的數組大小保持一緻。

例如待篩選數組要篩選行,則布爾值數組隻能是單列且行數與待篩選數組行數一緻的一維數組。

  1. 數組内容必須是布爾值,也就是True或者False(1,0等數字也可以)

由此,使用filter函數的關鍵,就是如何生成符合條件的布爾值數組,也就是如何輸入條件。

下文提供常見的filter函數篩選條件案例,可參照學習。

1.1 filter單條件

按行篩選出年齡大于60的數據。

=FILTER(A2:C8,C2:C8>60)

filter函數如何添加多個條件(還在手動篩選數據)8


按列篩選出姓名和年齡。

=FILTER(A2:C8,{1,0,1})

filter函數如何添加多個條件(還在手動篩選數據)9

條件式中的{1,0,1}就是一組單行的布爾值數組,分别對應姓名、性别和年齡,其中大于等于1則提取保留,等于0則剔除,此處直接寫了條件式結果。

1.2 filter同時滿足多個條件

按行篩選性别女且年齡大于50的數據。

=FILTER(A2:C8,(B2:B8="女")*(C2:C8>50))

filter函數如何添加多個條件(還在手動篩選數據)10

注意多個條件同時滿足情況下,使用 * 将多個條件相乘,此處不适用and函數,是由于and函數的最終結果是唯一值,不是數組。

把條件寫在單元格内,最終結果如下圖所示。隻有全部滿足,結果才為1。

filter函數如何添加多個條件(還在手動篩選數據)11


1.3 filter滿足多個條件中的任意一個條件

按行篩選性别女或年齡大于50的數據。

=FILTER(A2:C8,(B2:B8="女") (C2:C8>50))

filter函數如何添加多個條件(還在手動篩選數據)12

與同時滿足條件相比,唯一的區别就是多個條件之間使用 相加,此時,隻需有一個滿足,那麼結果至少會大于1。

1.4 filter同時滿足兩個條件或滿足其他任意一個條件

按行篩選年齡小于等于60且性别為女,或者年齡小于30的數據

=FILTER(A2:C8,((B2:B8="女")*(C2:C8<=60)) (C2:C8<=30))

filter函數如何添加多個條件(還在手動篩選數據)13

存在較為複雜的條件時,直接使用括号将對應條件合并成另一個新條件,再進行運算。

例如需求中的第一個且條件裡的多個條件相乘,然後合并在一起與另一個條件相加做或條件。

2. 使用普通if函數代替實現filter函數效果

如果軟件版本沒有filter,也想實現類似的效果,可以使用if函數搭配數組公式實現。

當然,不支持動态數組的軟件版本,還是要按照原本的數組公式錄入方法進行使用。

數組公式使用方法

  1. 需提前選中承接數組公式結果的單元格區域

  2. 再輸入數組公式

  3. 最後需要按數組确認鍵 CTRL SHIFT 回車 确認公式

具體使用,可以參考下方案例直接套用公式:

2.1 單條件篩選

=SORT(IF(B2:B8="男",A2:C8,""),,-1)

filter函數如何添加多個條件(還在手動篩選數據)14

由于單獨使用if篩選,會導緻不符合條件的數據變成空值,且留在原有的位置,因此使用sort函數,将其按倒序排序,使其符合條件的值保留在上方。

不好的點在于最終會對結果數據進行排序,如果要不進行排序操作,直接剔除空值數據的做法會很複雜,不建議使用。

2.2 多條件篩選

同時滿足情況下用*鍊接所有條件,或條件情況下用 鍊接。這與filter的多條件用法保持一緻。

=SORT(IF((B2:B8="男")*(C2:C8>60),A2:C8,""),,-1)

filter函數如何添加多個條件(還在手動篩選數據)15


if函數篩選的其餘情況基本與filter函數的使用條件一緻,靈活創建條件式生成的布爾值,可以實現不同的效果。

比如在之前發布的unique函數文章中(可看主頁文章列表),我們就利用了match函數與row函數定位了不重複數據的位置。

由此,你也可以生成對應的布爾值數組,可以用來給if函數,直接返回所有的不重複數據,感興趣的同學,歡迎評論留言。


,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关科技资讯推荐

热门科技资讯推荐

网友关注

Copyright 2023-2024 - www.tftnews.com All Rights Reserved