說明
使用此函數從符合指定條件的範圍或陣列中抽取資料。
語法
篩選條件 FILTER(array, include, [if_empty])
輸入
此函式接受下列參數:
| 名稱 | 必要 | 說明 | 有效輸入 |
|---|---|---|---|
陣列 |
是 | 要篩選條件的範圍或陣列。 | 儲存格、單元格範圍、動態陣列或結果為其中之一的公式。 |
包括 |
是 | 布林值陣列或邏輯表達式,用來決定要報酬哪一行。 | 一個邏輯值 (TRUE 或 FALSE)、一個數字 (0 為 FALSE,其他數字為 TRUE)、一個包含這些值的儲存格參考、或一個結果為這些值的公式。 |
if_empty |
否 | 如果沒有符合篩選條件的行,則會回傳值。 | 若未找到符合條件的列,則顯示的文字字串。 |
範例
範例資料
| A | B | C | D | |
|---|---|---|---|---|
| 1 | 名稱 | 年齡 | 城市 | 薪資 |
| 2 | 約翰一書 | 35 | 紐約 | 75000 |
| 3 | 愛麗絲 | 28 | 芝加哥 | 65000 |
| 4 | 鮑勃 | 42 | 洛杉磯 | 85000 |
| 5 | 喬治 | 22 | 丹佛 | 55000 |
| 6 | 海倫 | 30 | 斯科茨代爾 | 71000 |
公式範例
範圍必須匹配!如果您使用多重範圍與篩選條件,所有指定為篩選條件一部分的範圍的行值必須相同。
| 使用案例 | 公式 | 結果 | ||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 建立所有 30 歲以上員工的資料集。 | =filter(a1:d6, b1:b6>30) |
此公式會檢查資料集(A1:D6),然後擷取年齡大於 30 的資料行。
|
||||||||||||||||
| 建立所有 50 歲以上員工的資料集,如果沒有,則自訂訊息。 | =IFERROR(FILTER(A2:D6, B2:B6>50), "None") |
此公式使用 FILTER 檢查資料集(A2:D6),然後擷取年齡大於 50 的資料行。由於沒有,因此產生錯誤,由IFERROR 處理,顯示字串「None」。使用上面的資料設定,會產生以下結果:
|
||||||||||||||||
| 建立一個所有 25 歲以上員工的資料集,以薪資由低到高的方式排序。 | =sort(filter(a2:d6, b2:b6>25), 4, -1) |
此公式使用 FILTER 檢查資料集(A1:D6),然後擷取年齡大於 25 的列。SORT (..., 4, -1),然後按薪資(第 4 資料欄)降序排列篩選條件清單。 使用上面的資料設定,會產生以下結果:
|
||||||||||||||||
| 尋找收入高於平均薪資的員工。 | =FILTER(A2:D6, D2:D6> 平均值(D2:D6)) |
此公式確定薪資 (D2:D6) 的AVERAGE ,然後使用 FILTER 檢查資料集 (A2:D6),並抽取薪資大於平均值的那些行。使用上面的資料表格,會產生以下結果:
|
||||||||||||||||
| 識別 30 歲以下且收入超過 60,000 的員工。 | =FILTER(A1:D6,(B1:B6<30)*(D1:D6>60000)) |
此公式確定薪資 (D2:D6) 的AVERAGE ,然後使用 FILTER 檢查資料集 (A2:D6),並抽取薪資大於平均值的那些行。
|
附註
- 與所有陣列函數一樣,FILTER 會從包含 FILTER 函數的儲存格開始,動態填入相鄰儲存格的結果。
- 篩選條件:
- 支援複雜的多重條件篩選。
- 報酬符合指定邏輯準則的資料。
- 支援使用* ("AND「) 或 + (」OR") 進行多重邏輯測試。
例如,要篩選一個範圍以顯示 B 欄中值為 "Chocolate「或 」Coffee「 的記錄,公式為:=FILTER(A2:C100, (B2:B100=」Chocolate") + (B2:B100="Coffee"))。
提示
- 如果您有一列標題,而您不想包括標題,則將陣列值向下一行開始(例如在上述資料集中,從 A2 而非 A1 開始)。
- FILTER 可與其他函數合併/組合,包括: 篩選條件:
- CHOOSEROWS :進一步篩選條件。
- CHOOSECOLS :從篩選條件資料中選取特定欄位。
- SORT :排序篩選條件。
相關功能
以下是 Workiva 電子試算表支援的其他陣列公式函數。