FILTER函數介紹-新動態陣列時代的必學函數

FILTER函數是在Office 2021及Microsoft 365版本中才有的新函數,它是所有動態陣列函數使用的基石,它可以藉由篩選條件來幫你動態地改變公式輸出的陣列數值,適合應用於圖表資料來源數列,及若結合SUM、AVERAGE等函數使用,可取代掉SUMIFS、AVERAGEIFS等函數的使用。

FILTER函數簡介

FILTER函數是在Excel動態陣列公式功能出現後才有的函數,目前函數可使用於Office 2021及Microsoft 365版本中,主要的功能為:動態地篩選一範圍、表格(Table)的數值。

因所有隸屬於動態陣列函數體系的函數都一定包含一參數:陣列(Array),所以FILTER函數可以靈活地結合其他動態陣列函數進行各種應用,可說是動態陣列函數中最重要的函數呢!

FILTER函數所需要的參數主要為:(1)欲篩選的陣列(一欄或多欄),及(2)篩選的條件(邏輯判斷TRUE/FALSE),可設定多個判斷式。

傳統的查詢、篩選資料方式

本篇文章範例以某公司的損益表為例(如下圖),包含了年月、部門代號、成本名稱及成本費用等欄位。

20240520_P1

當經辦人員要篩選出某月份、某部門及某成本項目的成本費用時,傳統的做法會利用Excel篩選的功能進行篩選。(如下圖)

20240520_P3

例如將年月篩選至02402、部門代號篩選至F01,及將成本名稱篩選包含:變動成本及固定成本。(如下圖)

20240520_P2

之後,就可以再計算製造成本 = 變動成本 + 固定成本 = 65 + 110 = 175千元(如下圖)。

因為每次篩選的條件會改變,所以經辦人員就會常常重複上述動作,去進行查詢、篩選及計算數據,較為費工。

20240520_P4

使用FILTER函數查詢、篩選資料方式範例

1.查詢、篩選資料方式

在開始之前,讓我們先將此損益表資料表格化(Table),快捷鍵為:Ctrl + T,可易於公式的解讀,並將表格名稱設定為:損益表。

20240520_P5

可能大家對動態陣列還不熟悉,讓我們試著於儲存格中輸入公式:=損益表,大家猜猜會出現什麼數值呢?

20240520_P6

很神奇地Excel會回傳所有損益表範圍數值到相應的儲存格中,範圍邊界還有著淺藍色的邊框。(如下圖)

20240520_P7

接著讓我們開始練習撰寫FILTER函數的公式,首先於公式欄中輸入:=FILTER(損益表,.....各位可以看到下方有出現函數參數提示,第二個參數include代表著篩選條件。

20240520_P8

讓我們設定第一個篩選條件,輸入:損益表[年月]="02402"到第二個參數中(如下圖),可以看到輸出的陣列已篩選至所有年月為02402的資料。

20240520_P9

那要如何設定多個篩選條件呢?其中涉及到邏輯的基本原理:且(AND)、或(OR),若是「且的邏輯」,則兩條件式需相乘;若為「或的邏輯」,則兩條件式需相加。

讓我們先來設定「且的邏輯」,於上述條件式再增加一個條件:部門代號為F01,故FILTER函數中的條件式改為:(損益表[年月]="02402")*(損益表[部門代號]="F01")。(如下圖)

20240520_P10

接著在設定「或的邏輯」,例如我們想要篩選成本項目為變動成本或固定成本的資料,那需於FILTER函數中的條件式增加:((損益表[成本名稱]="變動成本")+(損益表[成本名稱]="固定成本")),記得加總後外面還要括號。(如下圖)

就可以篩選出我們要的資料範圍(年月為02402、部門為F01及成本名稱為變動或固定成本)。

20240520_P11

上述的條件式都是手工輸入,若每次查詢資料都要重新輸入新的條件似乎太麻煩,故可利用儲存格參照的方式去設定條件式。

如下圖我們設計儲存格H1及H2供使用者輸入欲查詢的年月及部門代號,下方的資料即會動態地改變。

20240520_P12

2.FILTER函數結合SUM函數,進行條件加總

若我們僅需要損益表某一欄位的資料,於FILTER函數中第一個參數array是可以只輸入一欄的陣列,例如輸入為:損益表[成本費用(千元)]。
(上述動作可以直接以滑鼠點擊損益表中成本費用欄位的表頭,不需人工輸入這麼麻煩。

20240520_P13

按Enter後,FILTER函數僅回傳了某條件下(年月為02402、部門為F01及成本名稱為變動或固定成本),成本費用欄位的資料。(如下圖)

20240520_P14

這時候若要動態地加總此成本費用陣列,僅需要在FILTER函數外面增加一個SUM函數,即可將FILTER函數輸出的結果進行加總。(如下圖)

20240520_P15

還可以再設計儲存格H3顯示出上述計算的成本費用加總,供使用者查看。

20240520_P16

FILTER函數其他應用

於本網站文章中,曾寫過不少FILTER函數應用的範例,以下舉三個例子:

1.可利用FILTER函數做出某年某月離職人員的清單陣列(如下圖),詳細請參考此篇文章:TEXTJOIN函數介紹

20240520_P18

2.可利用FILTER函數於生產日報中的圖表資料來源,設定近30天的銷售量資料陣列(如下圖),詳細請參考此篇文章:Excel動態陣列公式介紹-應用範例

20240520_P20

3.於儀表板設計上,可利用FILTER函數動態篩選樞紐分析表的資料,以做為圖表資料來源數列(如下圖),詳細請參考此篇文章:儀表板設計入門介紹

20240520_P19

總結及補充:

綜上所述,FILTER函數是在「動態陣列公式」功能出現以後最重要的函數之一,藉由可動態篩選出不同條件下資料範圍的功能,可進行相當廣泛的應用。

另補充,於Excel Power PivotPower BI中的DAX語言,也有功能類似、名稱同為FILTER的函數呢,學會了Excel中的FILTER函數後,對於未來學習DAX語言也會有所幫助!

這篇文章對您有幫助嗎?

平均評分 4 / 5. 4

We are sorry that this post was not useful for you!

Let us improve this post!

Tell us how we can improve this post?

發表迴響