FILTER 函數用於根據一個或多個條件,從指定的陣列或範圍中篩選資料。設定好條件後,符合標準的資料會自動顯示並溢出到相鄰的儲存格,適合用來製作動態報表或查詢系統。
Excel FILTER 函數語法
=FILTER(陣列, 包含條件, [若為空])| 參數 | 必填 | 說明 |
|---|---|---|
| 陣列 | 是 | 要進行篩選的原始資料範圍或陣列。 |
| 包含條件 | 是 | 用來判斷的條件,通常是一個會傳回 TRUE 或 FALSE 的邏輯運算式陣列,其高度或寬度必須與「陣列」相同。 |
| 若為空 | 選填 | 當沒有任何資料符合條件時,要顯示的替代文字或數值。 |
回傳:傳回符合條件的資料陣列。
適用版本:Microsoft 365、Excel 2021 以上版本支援。
FILTER 函數範例
範例 1:單一條件篩選
篩選出特定部門的員工名單與業績。
| 姓名 | 部門 | 業績 |
|---|---|---|
| 王小明 | 業務部 | 50000 |
| 陳怡君 | 行銷部 | 45000 |
| 林志明 | 業務部 | 60000 |
| 張雅婷 | 客服部 | 30000 |
在 E2 輸入公式:
=FILTER(A2:C5, B2:B5="業務部", "無資料")結果:王小明。公式判斷 B2:B5 中等於「業務部」的列,並傳回 A 到 C 欄的對應資料。結果會自動溢出到 E2:G3,E2 顯示第一筆符合條件的姓名「王小明」。
範例 2:數字條件篩選
找出業績達到指定標準的員工姓名。
| 姓名 | 部門 | 業績 |
|---|---|---|
| 王小明 | 業務部 | 50000 |
| 陳怡君 | 行銷部 | 45000 |
| 林志明 | 業務部 | 60000 |
| 張雅婷 | 客服部 | 30000 |
在 E2 輸入公式:
=FILTER(A2:A5, C2:C5>=50000, "無達標者")結果:王小明。條件設定為 C2:C5 業績大於或等於 50000,只選取 A 欄的姓名作為傳回陣列。符合條件的有王小明與林志明,結果溢出至 E2:E3,E2 顯示「王小明」。
範例 3:多條件篩選 (AND 邏輯)
篩選出特定部門且業績達標的資料。
| 姓名 | 部門 | 業績 |
|---|---|---|
| 王小明 | 業務部 | 50000 |
| 陳怡君 | 行銷部 | 45000 |
| 林志明 | 業務部 | 60000 |
| 李建國 | 業務部 | 40000 |
在 E2 輸入公式:
=FILTER(A2:C5, (B2:B5="業務部")*(C2:C5>=50000), "無")結果:王小明。使用星號 (*) 將兩個條件相乘代表 AND 邏輯,篩選出部門為業務部且業績大於等於 50000 的資料。結果溢出至 E2:G3,E2 顯示第一筆符合的姓名。
使用 FILTER 的技巧與注意事項
- 若要設定「或 (OR)」的多條件篩選,可以使用加號 (+) 將條件括號相加,例如 (條件1)+(條件2)。
- FILTER 傳回的結果是動態陣列,當原始資料更新時,篩選結果會自動重新計算並改變溢出範圍。
- 可以將 FILTER 與 SORT 函數結合使用,讓篩選出來的資料自動按照指定的欄位進行排序。
FILTER 常見錯誤與解決方法
| 錯誤 | 原因 | 解決方法 |
|---|---|---|
| #CALC! | 沒有任何資料符合篩選條件,且公式中省略了「若為空」這個第三參數。 | 在公式的第三個參數加上替代文字,例如 =FILTER(A2:B5, B2:B5="X", "查無資料")。 |
| #VALUE! | 「包含條件」陣列的列數或欄數與要篩選的「陣列」大小不一致。 | 檢查並修正條件範圍,確保條件範圍的高度(或寬度)與資料範圍完全相同。 |
| #SPILL! | FILTER 函數傳回的資料需要多個儲存格來顯示,但目標範圍內已經有其他資料擋住。 | 清除公式所在儲存格右方及下方阻擋溢出的資料,讓函數有足夠的空白空間顯示結果。 |
Google 試算表可以用 FILTER 嗎?
Google 試算表完全支援 FILTER 函數,語法與 Excel 相同,皆可處理動態陣列與多條件篩選。
下載 FILTER 範例檔
上面的範例都整理在這個檔案裡,每個範例一個工作表,黃色格子是公式,可以直接改資料看結果變化:FILTER 範例.xlsx(範例公式的結果經過兩個模型交叉核對)。
常見問題
可以同時設定多個條件來篩選嗎?
可以。要同時符合多個條件(AND),請將各條件用括號包住並用星號相乘,例如 (條件A)*(條件B);若只要符合其中一個條件(OR),則用加號相加,例如 (條件A)+(條件B)。
為什麼公式會出現 #SPILL! 錯誤?
這是因為 FILTER 函數需要將結果展開到相鄰的儲存格,但那些儲存格裡面已經有文字或數值了。只要把擋住公式展開範圍的資料刪除,結果就會正常顯示。
篩選出來的資料可以自動排序嗎?
可以。只要在 FILTER 函數外面包上一層 SORT 函數即可。例如 =SORT(FILTER(資料, 條件), 排序欄位, 順序),這樣就能同時完成篩選與排序。
相關函數
這篇收錄在「Excel 函數字典」。




