快訊
2026-07-11
Office 系列教學

Excel FILTER 函數完整教學:一條公式多條件動態篩選

約 6 分鐘閱讀 · 38 次瀏覽

⚡ 站長快讀:核心重點

  • 文章屬性:教學實戰(Excel 函數)
  • 適用版本:Microsoft 365 / Excel 2024 / Excel 2021(Excel 2019 以前不支援)
  • 難易度 / 耗時:⭐⭐ / 約 12 分鐘
  • 核心結論:Excel FILTER 函數用一條公式依條件動態篩出資料並自動溢出成新表,來源一改結果就跟著更新,不用再手動篩選、複製、貼上。
  • 適用對象:常要從一大張明細撈出「符合某條件的那幾筆」的人

📌 快速答案

一句話答案:Excel FILTER 函數的用法是輸入 =FILTER(資料範圍, 條件, [找不到時顯示的值]),它會依你給的布林條件把符合的列整組抓出來、自動溢出到下方儲存格,而且來源資料一變動,結果會即時重算。

廣告

🧰 開始前的準備

  • 適用版本:Microsoft 365、Excel 2024、Excel 2021(含 Mac 版與網頁版);Excel 2019、2016 及更早版本沒有這個函數,輸入會顯示 #NAME?
  • 權限需求:一般使用者即可,不需系統管理員
  • 需要工具:桌機版或網頁版 Excel;無須安裝任何外掛
  • 預計耗時:約 12 分鐘
  • 先備知識:知道什麼是「儲存格範圍」(例如 A2:D13)就夠了

🔍 為什麼你需要這個?

你是不是常這樣:一張幾百列的明細,想看「台北」的訂單,就去點「篩選」的小三角形、勾一勾;下次要看「台中的滑鼠」,又得重點一次;想把結果留下來,還得複製、貼到另一張分頁。資料一更新,前面篩的全部作廢,整套動作重來。傳統的「自動篩選」是手動、一次性、就地遮蔽的操作——它只是把不符合的列藏起來,你沒辦法把篩出來的結果當成一個會自己更新的表格拿去別的地方用。

Excel FILTER 函數走的是完全不同的路子:它是一條公式,把「要篩哪張表、用什麼條件、找不到要顯示什麼」寫進去,按下 Enter,符合的資料就整組「溢出(spill)」到公式底下。之後你在來源表新增、修改任何一列,FILTER 的結果會自動跟著重算,不用你再動一根手指。這也是它和 XLOOKUP 最大的差別——XLOOKUP 一次只回傳「一筆」對應值,FILTER 則是一次回傳「所有符合條件的列」。


🛠️ 實戰步驟

假設你的資料長這樣:A 欄「地區」、B 欄「業務」、C 欄「產品」、D 欄「金額」,標題在第 1 列,資料在 A2:D13。另外用 F1 放你想篩的地區、F2 放你想篩的產品,方便隨時改條件。

步驟一:認識 FILTER 的三個參數

FILTER 的語法只有三個參數,第三個可省略:

=FILTER(array, include, [if_empty])
  • array(必填):要篩選的來源範圍,例如 A2:D13
  • include(必填):一組「布林條件」,也就是會算出 TRUE / FALSE 的判斷式,而且它的高度(或寬度)必須和 array 一樣。例如 A2:A13="台北" 會對每一列傳回 TRUE 或 FALSE。
  • [if_empty](選填):當沒有任何一列符合時要顯示什麼。強烈建議一定要填,原因下面步驟五會講。

步驟二:寫出第一條 FILTER 公式(單一條件)

先做最簡單的:把 F1 指定地區的所有訂單撈出來。在一個空白儲存格(例如 H2)輸入:

=FILTER(A2:D13, A2:A13=F1, "查無資料")

按下 Enter,符合的整組資料會自動往下、往右溢出。你只在一個儲存格打了公式,結果卻鋪滿好幾列——這就是動態陣列的溢出行為。注意公式不需要用 $ 絕對參照,因為它只存在於一個儲存格,自己把結果攤到隔壁去。

廣告

步驟三:多條件——AND 用星號、OR 用加號

真實情況通常不只一個條件。FILTER 的多條件不用 AND() / OR() 函數,而是靠算術符號:

# 同時符合「地區=F1」而且「產品=F2」(AND,用乘號 *)
=FILTER(A2:D13, (A2:A13=F1)*(C2:C13=F2), "查無資料")

# 只要符合其中一個條件即可(OR,用加號 +)
=FILTER(A2:D13, (A2:A13=F1)+(C2:C13=F2), "查無資料")

原理很直覺:布林值在運算時 TRUE 當 1、FALSE 當 0。兩個條件相乘,只有「1×1」才會是 1(兩個都成立),這就是 AND;兩個條件相加,只要其中一個是 1 結果就 ≥1(視為成立),這就是 OR。記住「乘號=而且、加號=或者」,多條件就通了。

步驟四:順便排序——用 SORT 包在外面

篩出來的結果想照金額由大到小排?把 FILTER 整個包進 SORT 裡:

=SORT(FILTER(A2:D13, (A2:A13=F1)*(C2:C13=F2), "查無資料"), 4, -1)

SORT 的第 2 個參數 4 代表「依第 4 欄(金額)排序」,第 3 個參數 -1 代表「由大到小(遞減)」。這種「函數包函數」是動態陣列的精髓——結果依然會即時重算。如果你要的是分組加總而不是逐筆列出,那是另一個工具的守備範圍,可參考〈Excel GROUPBY、PIVOTBY 一條公式做統計〉。

步驟五:驗證結果與看懂錯誤訊息

輸入完公式,對照來源表確認筆數與內容正確後,重點是看懂三個最常見的錯誤:

  • #CALC!:代表「沒有任何一列符合條件」。因為 Excel 目前不支援空白陣列,一旦篩不到東西又沒寫第三參數,就會回這個錯。解法就是補上 [if_empty],例如 "查無資料"""
  • #SPILL!:代表「結果要溢出的範圍被卡住了」——底下或右邊的儲存格已經有東西。把溢出區清空即可。
  • #NAME?:多半是你的 Excel 版本太舊(2019 以前沒有 FILTER),或函數名稱打錯。

💡 總結:什麼時候該用 FILTER

站長我的判斷原則是這樣:當你要的是「符合條件的整組資料、而且希望它會自己更新」,FILTER 幾乎永遠比手動的自動篩選好用——因為它可被公式引用、可被 SORT 或其他函數再加工,是一個活的結果而不是一次性的畫面。反過來,如果你只是想臨時看一眼、不打算把結果拿去別處用,那內建的篩選按鈕反而更快,沒必要動用公式。

廣告

另外提醒兩個容易忽略的點。第一,FILTER 是 Microsoft 365、Excel 2024、2021 才有的新函數(這是官方「適用版本」明列的事實),你在公司用舊版 Excel 開這份檔案會直接壞掉、顯示 #NAME?——要分享檔案前先確認對方版本。第二,官方也提到跨活頁簿的動態陣列只有在「兩個檔案都開著」時才有效,來源檔一關,連動的 FILTER 公式重算時會回 #REF!。把這兩件事放心上,就能少踩很多雷。真正把 FILTER、XLOOKUP、SORT 這幾個動態陣列函數串起來用,你會發現很多過去要靠樞紐分析表或手動複製才能做的事,現在一條公式就搞定了。


❓ 常見問題

Q:我輸入 FILTER 卻顯示 #NAME?,是打錯了嗎?

先檢查版本。FILTER 只有 Microsoft 365、Excel 2024、Excel 2021 支援;Excel 2019、2016 及更早版本沒有這個函數,不管怎麼打都會顯示 #NAME?。若版本沒問題,再檢查函數名稱有沒有拼錯。

Q:FILTER 和自動篩選(那個小三角形)到底差在哪?

自動篩選是手動、就地把不符合的列藏起來,一次性、不會自己更新;FILTER 是公式,把符合的列「複製」一份溢出到別的地方,來源一改結果就即時重算,而且可以再被其他函數引用加工。

Q:篩出來的結果為什麼顯示 #SPILL!?

廣告

因為結果要溢出的範圍(公式底下或右邊)被既有內容卡住了。Excel 需要那塊空間來鋪結果,把擋路的儲存格清空,公式就會正常溢出。

Q:條件要「不等於」某個值怎麼寫?

<>。例如排除台北:=FILTER(A2:D13, A2:A13<>"台北", "查無資料")。多條件一樣可以用乘號、加號組合。


🔗 延伸閱讀

📎 參考資料來源

📖 第一級|廠商官方:

⚠️ 本文核心事實以第一級為準,第二級為補充。

📅 本文查證戳記:2026-07-04 依據 Microsoft 官方 FILTER 函數文件撰寫。若你在後續版本遇到步驟失效,歡迎在留言區回報,站長會更新文章。

廣告