在 Excel 中處理資料篩選、分類輸出或動態報表時,FILTER 函數能根據指定條件,從原始陣列中擷取符合條件的資料列。它是 Excel 365 的動態陣列函數之一,適合用於進行高效篩選:化繁為簡,自動篩選符合條件的內容,也能用於報表設計、條件篩選、資料清理與自動化輸出。
🔹快速摘要(語法、用途、常見場景)
- 用途:根據條件篩選陣列中的資料列
- 語法:
=FILTER(陣列, 條件陣列, [無結果時回傳值]) - 常見場景:條件篩選、分類報表、資料清理、動態輸出、自動化分析
一、FILTER 函數語法與用途
語法:
=FILTER(array, include, [if_empty])
- array:要篩選的資料陣列或範圍
- include:邏輯條件陣列,與 array 列數相同
- if_empty(選填):若無符合條件資料時的回傳值(預設為錯誤)
=FILTER(A2:B100, B2:B100="有效") 表示篩選 B 欄為「有效」的資料列。二、範例教學:五個基礎 + 五個進階範例
🔸基礎範例
範例一:篩選 B 欄為「有效」的資料列
=FILTER(A2:B100, B2:B100="有效")
範例二:篩選金額大於 1000 的資料
=FILTER(A2:C100, C2:C100>1000)
範例三:篩選多條件(AND)
=FILTER(A2:D100, (B2:B100="北區")*(C2:C100>500))
範例四:篩選多條件(OR)
=FILTER(A2:D100, (B2:B100="北區")+(C2:C100>500))
範例五:無結果時回傳「無資料」
=FILTER(A2:B100, B2:B100="無效", "無資料")
🔸進階範例
範例六:搭配 SORT 排序篩選結果
=SORT(FILTER(A2:C100, C2:C100>1000), 3, -1)
範例七:搭配 UNIQUE 篩選特定類別資料
=FILTER(A2:B100, B2:B100=UNIQUE(B2:B100))
範例八:搭配 TEXTJOIN 建立動態提示
=TEXTJOIN("、", TRUE, FILTER(A2:A100, B2:B100="有效"))
範例九:批次篩選多組條件(Excel 365)
=MAP(D2:D10, LAMBDA(x, FILTER(A2:C100, B2:B100=x)))
範例十:搭配 LAMBDA 建立自訂篩選函數
=LAMBDA(data, FILTER(data, INDEX(data,,2)="有效"))(A2:C100)
三、常見問題解答(FAQ)
Q1:FILTER 可以處理多條件嗎?
可以,使用 * 表示 AND,+ 表示 OR。
Q2:FILTER 可以處理動態陣列嗎?
可以,支援 Spill 陣列與函數組合。
Q3:FILTER 會改變原始資料嗎?
不會,僅回傳新的動態陣列,不影響原資料。
Q4:FILTER 可以處理整欄資料嗎?
可以,條件陣列需與資料列數一致。
Q5:FILTER 可以搭配哪些函數使用?
常見搭配 SORT、UNIQUE、TEXTJOIN、MAP、LAMBDA 等。
四、注意事項與錯誤排除
- 條件陣列需與資料列數一致,否則回傳
#VALUE! - 若無符合條件資料,預設回傳
#CALC!,可使用if_empty指定替代值 - FILTER 不會修改原始資料,只回傳新的動態陣列
- 適用於報表分類、條件輸出與資料清理
- 建議搭配錯誤防呆邏輯處理空結果情況
五、延伸技巧與相關函數
若你需要進一步處理資料篩選與分類,可搭配以下函數:
你可以使用 SORT 函數 對篩選結果進行排序,例如 SORT(FILTER(...), 欄位, 排序方向)。
若你需要建立唯一分類,可搭配 UNIQUE 函數,例如 UNIQUE(FILTER(...))。
若你想建立動態提示或合併結果,可搭配 TEXTJOIN 函數,例如 TEXTJOIN("、", TRUE, FILTER(...))。
若你需要批次處理或自訂邏輯,可搭配 MAP 與 LAMBDA 函數,建立可重複使用的篩選流程。
這些函數能與 FILTER 組合成一套完整的「條件篩選 → 結構分類 → 報表輸出 → 批次處理」流程,適用於報表設計、資料清理與動態分析。
六、結語與延伸閱讀推薦
FILTER 函數是 Excel 中專門處理條件篩選與分類輸出的動態工具,適合用在報表設計、資料清理、分類分析與自動化輸出等情境。學會 FILTER 後,你可以進一步探索:
- [SORT 函數教學]:排序篩選結果的彈性工具
- [UNIQUE 函數教學]:建立唯一分類的資料處理工具
- [MAP 函數教學]:批次處理與邏輯封裝的動態技巧



















