想喺一大堆Excel資料入面「即刻」篩出你要嘅名單?呢篇文章將由最入門嘅FILTER操作,逐步教到進階實戰:自動處理多條件(例如年齡30至50+指定地區)、用VSTACK清晰重組表頭、再進一步用CHOOSECOLS只顯示你需要嘅欄位。你唔使再逐格揀Filter選項,亦唔會因為輸入唔完整就找唔到資料,效率直接拉滿。
文章目錄
- 用 Excel 篩選函數從最簡單 Filter 入手快速找出目標資料 立即提升報表效率
- 掌握 FILTER 的三個核心參數 Array Include If Empty 實現動態篩選與自動容錯回應
- 進階條件組合 用多重條件同時限制地區與年齡範圍 並提供找不到時的清晰處理建議
- 用 VSTACK 自動重組表頭與欄位結構 讓篩選結果自動變得易讀易用
- 解決關鍵字不完全相符問題 用 ISNUMBER 與 SEARCH 做部分匹配並提醒重複字串造成的誤差
- 只顯示你需要的欄位 用 CHOOSECOLUMNS 精準定制輸出內容 讓分析焦點更集中
- 常見問答
- 簡而言之
用 Excel 篩選函數從最簡單 Filter 入手快速找出目標資料 立即提升報表效率
當你在一大堆 excel 資料裡要「快速找目標」,最先想到的其實是 Home 分頁的 一般篩選(Filter):點第一列的三角形,選「全灣」就立刻只剩下符合的客人。不過只要你的條件一變多(例如要找 30 至 50 歲),你就得逐個逐個揀年齡,反而拖慢報表速度。要提升效率,關鍵就是把篩選變成「可計算、可更新」的結果–用 Excel FILTER 函數,從最簡單版一路做出你要的精準查詢。
先用最直覺的版本:假設你的資料在 Column A 到 F,想找出「荃灣」所有客人,做法是用 FILTER 函數去定義三件事:Array(要從哪一段資料篩)、Include(符合條件的判斷式)、If Empty(找不到時顯示什麼)。例如把 district = J1 當條件:當你輸入 J1 是「shatin」就會回傳荃灣/沙田對應的名單;若完全找不到,公式會自動顯示你設定的文字(例如 Not Found)。這種做法的優點是:條件改了(J1 換成「沙田」、「東區」),輸出的結果會立即動態更新。
但真正在工作上更常見的,是你輸入不一定是「完全相符」。例如你已經用公式寫死區域開頭要完全等於「shatin」,結果你在 J1 打的是「shatin填字TIN」或只想找包含字詞,這時候一般的 等於(=) 就會顯示找不到。解法就是把 include 的判斷由 等於 換成「搜尋是否包含」:在條件中加入 ISNUMBER(SEARCH(…)),把「在某個欄位裡,有沒有出現你輸入的字」轉成 TRUE/FALSE,這樣你就可以只打「city」就找到 九龍城 相關資料;同時也要留意:若 district 內有字重疊(例如找「荃灣」卻包含到「灣」),可能會把相近字一起拉出來,這是條件邏輯要再精準化的提醒。
想把報表做得更像你平常的「客製輸出」,下一步就把篩選結果的呈現也一起控制:先用 VSTACK 把你原本缺失/混在一起的欄位頭(header)補回來,令輸出結果可讀性更高(例如把 A1 到 F1 的欄名一起堆疊出來:firstname、membership number、membership level、district、age)。再進一步,如果你只想顯示部分欄位,不要全表都攤開,就在 FILTER 前加入 CHOOSECOLS:用「第幾欄」來挑選要顯示的欄位(例如你只要 membership number、first name、last name,就選對應編號,例如 3、1、2;如果要再加 h 欄,直接再補上該欄位編號即可)。
| 你想達成的目標 | 實際用到的 FILTER 結構 | 常見工作情境 |
|---|---|---|
| 只用單一條件快速篩 | Array + Include(district=J1) + If Empty | 一鍵找「全灣區」客人 |
| 多條件(例如 30-50 歲) | 多個 Include 條件相乘(>=30、<=50、district=J1) | 先縮小年齡區間,再篩地區 |
| 輸入是「部分字」也要命中 | ISNUMBER(SEARCH(J1, 區域欄位)) | 打「shatin」/「city」就能找包含內容 |
| 輸出只顯示部分欄位 | CHOOSECOLS(…) + 再做 VSTACK 顯示 header | 報表只要 membership number、姓名,不要整張表 |
掌握 FILTER 的三個核心參數 Array Include If Empty 實現動態篩選與自動容錯回應
要把 FILTER 用到「又動態又可容錯」,你要先記住它其實由三個核心參數組成:Array、Include、If Empty。當你明白這三個位置分別負責「資料來源 / 篩選條件 / 找不到時怎樣回應」,公式就會變得可讀、可擴充,而且一改條件就即刻更新結果。
- Array:你要從哪一整塊範圍去找資料(例如原本選了 Column A 到 Column F)。
- Include:你要用什麼條件過濾(例如 district = 荃灣,或再加 age 範圍)。
- If Empty:當結果是空的時,Excel 要回什麼字(例如傳回 “Not Found”,避免你看到一個「毫無反應」的空白格)。
以「找出荃灣所有客戶」做示範:把你想找的資料範圍放在 Array(A到F),然後在 Include 裡設定條件,例如 district 是否等於 J1(J1 你可以輸入荃灣/沙田/全灣等)。最後在 If Empty 放入 “Not Found”,這樣當沒有符合資料時,Excel 會明確回應,而不是讓你以為公式失效。
要進一步做「動態條件」就把 Include 擴展成 多個 End conditions:例如同時篩選 荃灣 且 age 介乎 30 至 50。你可以把條件拆成三段,用乘號(*)把條件「同時成立」串起來:district = J1、age >= J2、age <= J3。範例結果會只留下符合者(例如影片中的 Fiona Lee、Marcus Choi),而且當你把 J1 改成東區/沙田,輸出會立刻跟著更新。
另外,真正在工作上最常見的問題是「你輸入的字不是完全相符」。就像你想找沙田,但你只打 shatin,若表格裡 district 寫的是中文「沙田」,用完全相等就會直接找不到。解法是把 district = J1 改成「包含文字」判斷:用 isNumber 搭配 search,用「J1 的字是否出現在 district 的任何位置」來決定真/假。要注意去程式化輸入所帶來的副作用:若 district 裡有重複或包含字(例如你找「荃灣」的「灣」時),可能會連帶把包含該字的其他區也一起列出。
如果你覺得結果太雜、只想顯示部分欄位(例如只要 membership number、first name、last name),做法是對 FILTER 的輸出加上欄位控制。常用兩招:VSTACK 先把你指定的表頭(A1到F1)一起堆疊到結果上,令輸出不再混亂;再用 CHOOSECOLS 控制只回傳你指定的欄位。這樣你的 dynamic filter 不只「篩得到」,還能「報表一出即用」。
進階條件組合 用多重條件同時限制地區與年齡範圍 並提供找不到時的清晰處理建議
要同時限制「地區」同「年齡範圍」,最直觀做法係用 FILTER(陣列, Include, 如果空值):把地區條件先對齊到例如 J1(district = 荃灣),再加年齡條件例如 H(age)≥ J2 及 H(age)≤ J3。關鍵係把多個條件用「乘(*)」綁起來–乘係代表「同時成立」,所以最終會只剩下符合「荃灣 + 30至50歲」嗰班客戶(例如直播例子中最後只剩 Fiona Lee 同 Marcus Choi)。
示範邏輯(以你表中區域欄位為 District、年齡欄位為 Age):
- 地區條件: District 列 = J1
- 下限年齡: Age 列 >= J2(例如 30)
- 上限年齡: Age 列 <= J3(例如 50)
- 多條件同時成立: 用 條件1 * 條件2 * 條件3
另外一個進階位係「找不到時要點樣處理」。Addy 係用 If Empty 直接回覆清晰訊息,例如 “Not Found”(如果你設定嗰個組合冇任何符合資料,就唔會畀一堆錯誤或空白嚇到你)。更貼合實務嘅做法係:一旦沒有結果,就提示用戶檢查輸入,例如地區拼法或年齡是否太窄;因為一格輸入唔岩,就會全部「lock」到冇輸出。
若你想輸出表頭並保持結果好睇,Live 例子建議喺 FILTER 前面加 VSTACK:先把你想顯示嘅標題(例如 A1:F1:firstname、lastname、membership number、membership level、district、age)VSTACK 出嚟,咁你篩出嘅動態陣列就會包含 header,唔會變成「冇欄名好混亂」;而如果你仲想縮到只顯示指定欄位,例如只留 membership number / first name / last name,則可在 FILTER 外層再包 CHOOSECOLS 去自定義返回欄。補充:Addy 亦提到地區字串未必會「完全相符」,例如輸入 shatin 但資料係 沙田,可用 ISNUMBER(SEARCH(查找字, 地區欄範圍)) 做「包含式」匹配;注意缺點係如果有重覆片段(例如只找「灣」可能會同時夾到「灣仔」),就要留意用詞是否過闊。
| 場景 | 你要用嘅技巧 | 找不到時 |
|---|---|---|
| 同時限制地區 + 年齡 | FILTER + (District=J1) * (Age>=J2) * (Age<=J3) | 用 If Empty 顯示 “Not Found” |
| 結果要有表頭 | VSTACK(A1:F1, FILTER(…)) | 同樣放入 If Empty,避免空白 |
| 唔想顯示全部欄位 | CHOOSECOLS 只篩你要嘅列 | 若冇結果,If Empty 仍可保留訊息 |
用 VSTACK 自動重組表頭與欄位結構 讓篩選結果自動變得易讀易用
用 VSTACK 去「自動重組表頭與欄位」的目的很簡單:當你用 FILTER 得到動態結果後,輸出區如果冇埋表頭,睇嘅時候就會好易混亂。Addy 示範過一個實戰做法:喺公式嘅 FILTER 前面先用 VSTACK 把你原本嘅表頭「貼」上去,令篩選出嚟嘅清單由第一行開始就係正確欄位名稱,之後不論你揀 荃灣、沙田,或者更換其他條件,結果都會自動保持清晰可讀。
實際寫法思路係:VSTACK(表頭範圍, FILTER(…))。例如你有原本表頭係 A1:F1,你就先把 A1:F1 當作第一塊,再接上 FILTER 產生嘅內容。咁樣你出來嘅表會自動包含:firstname、membership number、membership level、district、age 等欄位標籤。Addy 提醒,若果你忽略呢一步,篩選結果頁面就會好似少咗第一行一樣,後面再配合報表、截圖、或交收畀同事時會特別麻煩。
跟住就係「篩選易用」嘅關鍵:表頭可視化 + 條件彈性。Addy 用咗一個真實卡位例子:當在 J1 入入 shatin 能夠搵到資料,但若你用輸入文字時只係「一個字」或出現不完全相符,就會搵唔到。佢嘅解法係喺公式中把嚴格相等條件,改成用 SEARCH 配合 ISNUMBER 去判斷「存在於字串任何位置」。重點係:即使你啲條件輸入更彈性,因為 VSTACK 已經幫你把表頭重組好,所以你每次篩得到嘅結果都仍然易讀易用。
- VSTACK 作用:把 表頭(A1:F1) 跟 FILTER 結果合併,避免「篩選輸出冇 header」造成混亂。
- 條件彈性配套:用 ISNUMBER + SEARCH 取代嚴格等於,令輸入「部分文字」亦可篩到匹配資料。
- 進階欄位精簡:再配合 CHOOSECOLS 只展示你需要嘅欄位(例如只留 membership number、first name、last name),令輸出更貼近報表用途。
如果你同時想結合「自動表頭 + 只顯示指定欄位」,Addy 亦提過一個好用策略:先用 VSTACK 裝上表頭,再用 CHOOSECOLS 控制篩選結果只顯示你要嘅欄位順序(例如把 membership number 放第一、first name、last name 接住)。咁做出來嘅輸出唔止易讀,仲可以直接當作可重複使用嘅「動態報表模板」,每次改條件都自動更新,而且格式一致。
以下係你可以直接帶走嘅輸出效果邏輯(概念示意):
| 表頭(由 VSTACK 自動貼上) | FILTER 自動生成的資料行 |
|---|---|
| firstname, membership number, membership level, district, age | 符合條件(例如 district 含部分字 + age 範圍)的名單 |
總結就係:你唔單止「篩到資料」,而係用 VSTACK 先把 表頭與欄位結構整理好,令篩選結果由一開始就變成同報表一樣可讀、可用、可交付。
解決關鍵字不完全相符問題 用 ISNUMBER 與 SEARCH 做部分匹配並提醒重複字串造成的誤差
用 FILTER 做資料篩選時,如果你的條件輸入(例如:荃灣、shatin)跟資料欄位(district)只有「部分字」相符,就很容易出現「解不出結果」或「結果不準」的情況。解法係將「完全相符」改成「部分匹配」,做法就係在公式入面用 ISNUMBER + SEARCH:SEARCH負責搵字串位置、ISNUMBER負責把「有無搵到」轉成 TRUE/FALSE,咁 FILTER 先至會跟住條件去列出該行。
以你原本用「E 到 J1 之間必需完全相等」嗰段為例(你講過:輸「shatin」可能點解揾唔到資料,因為資料不一定由開頭就係 shatin),要做部分匹配,你可以把條件改成下面概念:在公式裡,把「district 等於 J1」改為「EE:E(district 欄)裡搵得到 J1 就算符合」。實作時核心邏輯係:
- SEARCH( J1, EE:E ):當 J1 出現在 district 任意位置,就會回傳位置(數字);找唔到會報錯。
- ISNUMBER( SEARCH(…) ):有回傳位置(數字)= TRUE,代表符合條件;找唔到 = FALSE。
- 結果效果:你輸入「abc」唔需要完全等於整個 district,只要係佢入面出現過就會篩到。
但要提醒:部分匹配會帶來重複字串誤差。例如你想揾 荃灣,實際 search 係「搵到任何包含『灣』或包含子字」都會列出;所以當 district 內同時存在「灣」出現而又連到其它地名(例如你講過:會連「灣仔」嗰類)就必然會被一起揀出嚟。換句話講,部分匹配係好強,但你要留意資料欄位如果存在常見字(例如「灣」「城」「村」等),FILTER 就會比你想像範圍更闊。
| 你輸入 J1 | SEARCH/ISNUMBER 的判斷 | 可能出現的結果 |
|---|---|---|
| shatin | district 任意位置出現 shatin 就 TRUE | 可篩到原本因「唔完全相符」而被漏掉的沙田資料 |
| 荃灣 | district 含有「灣」相關子字串就可能 TRUE | 可能同時揀到「灣仔」等含同字的地名(誤差來源) |
要減少呢個誤差,你可以考慮兩個方向:一係確保資料 district 係「字串格式更可控」(例如用一致分隔符),二係如果你只想限定為「整個詞」而唔係任意包含,就要改篩選條件策略(例如把關鍵字拆分後再判斷、或改用更嚴格的比對方法)。總之:ISNUMBER + SEARCH係解決「關鍵字不完全相符」嘅最快捷方案,但就必須預先接受並留意「重複字串」導致的範圍擴大問題。
只顯示你需要的欄位 用 CHOOSECOLUMNS 精準定制輸出內容 讓分析焦點更集中
當你已經用 FILTER 把「符合條件」的會員/客戶篩出來後,下一個關鍵往往是–你想不想把所有欄都一起拋出?Addy 在實戰中發現,資料量一大,只要輸出欄位不夠精準,閱讀和判斷就會立刻變慢:例如同一份表有 firstname、lastname、membership number、membership level、district、age,如果你只關心「某些欄位」做報表,卻把其他欄也一起顯示,畫面就會變得混亂,分析焦點自然散掉。
這時候就要用到 CHOOSECOLS:它的作用是「在 FILTER 之前或之後,直接指定你要顯示的列欄」。做法超直接–在公式前面加上 CHOOSECOLS( … ),然後用逗號列出你要的欄位編號。Addy 的例子非常貼近工作場景:她只想顯示 membership number、first name、last name,於是先確認原表欄位順序(例如第一欄是 first name、第二欄是 last name、第三欄是 membership number),再輸入對應的欄位數字;結果出來就會變成只包含你指定欄位的乾淨輸出,報表閱讀效率立刻提升。
| 目標輸出 | 你需要指定的欄位(以欄位位置編號) | 備註 |
|---|---|---|
| 只看會員編號 + 名 + 姓 | 3,1,2(第三欄 membership number、第一欄 first name、第二欄 last name) | 欄位順序可自行重排 |
| 再加上 district | 在後面追加 第幾欄(例如新增第 6 欄 → …,6) | 想看什麼就加什麼 |
| 只看你做分析需要的欄位 | 只列出該報表的欄位編號集合 | 避免資訊雜訊 |
更進階的好處是:當你的 FILTER 條件本身已經很「動態」(例如 criteria 改成不同區域、再加上年龄條件 30 至 50),你依然可以用 CHOOSECOLS 把輸出維持在同一種格式,讓你後續做匯出、統計或延伸分析會更穩、更一致。要提醒的是,CHOOSECOLS 只負責「挑欄」:條件(例如 district = 某區、age 大於等於 30 且小於等於 50)仍由 FILTER 的條件邏輯決定;兩個功能分工明確,才是真正省時間的關鍵。
- FILTER:決定「哪些資料列出來」
- CHOOSECOLS:決定「哪些欄位要顯示」
- 輸出只留重點 → 報表更清晰、分析更快
如果你想把整份結果從「能用」提升到「好讀、好分析」,就用 CHOOSECOLS 把欄位精準定制:先把步驟篩出正確列,再把欄位收窄成你真正需要的那幾欄。這樣你的工作時間會少花在拖拉與掃視上,把精力放回判斷本身,報表效果也會明顯更專業。
常見問答
🔎 Excel FILTER 函數可以一次篩出多個條件嗎?
可以,用 FILTER 把「多個條件」寫進公式就能同時篩選。你可以先固定要搜尋的資料範圍(例如選取 Column A 到 Column F),再用條件去限制結果,例如同時篩出「district = 荃灣」以及「age 介乎 30 至 50」。做法上會把條件寫成多個條件範圍相乘(如同時要求 H ≥ 30 且 H ≤ 50),最後用 FILTER 把符合的名單自動列出。這就比傳統逐個按年齡篩選更快、更動態。
🧠 為什麼輸入「沙田」找不到結果?怎樣做可支援部份字串?
因為你用的是「完全相符」邏輯,所以只輸入或包含關鍵字時可能會匹配不到。實務上如果你原本條件是用「district 等於 J1」,輸入「shatin」找不到時,代表資料並非完全同樣字型或內容。解法是把公式中的條件改成「搜尋包含」模式:可在 district 範圍加入 SEARCH,再配合 ISNUMBER 判斷是否找到關鍵字(把 J1 當成要尋找的文字來源)。這樣你即使輸入「shatin 之類的部分字」也能把相關 records 找出,而且還可以做更彈性的搜尋,例如你只輸入「city」也能拉出包含「九龍城」等相關資料。
🧩 篩選後表格太亂,能只顯示我想看的欄位嗎?
可以,你可以在 FILTER 前加入欄位重組,讓結果只顯示指定欄位並保留清晰標題。像你如果希望輸出「membership number、first name、last name」這三欄,不想把所有欄位都一起吐出來,就能用 CHOOSECOLS 來指定要顯示的列:先把你要的欄位用序號選出(例如先挑 membership number 放在第 1、再挑 first name 與 last name 的序)。同時也能先用 VSTACK 將表頭(如 A1 到 F1 的 header)一起疊到輸出結果前面,避免篩選出來第一行沒有 header 而造成混亂;如此一來你用輸入條件切換(如從 J1 改成其他 district)時,輸出會保持乾淨、可直接用於報表。
簡而言之
如果你也曾經在一大堆 Excel 資料裡,花時間一個個篩條件、又常常因為條件改動而重做,那你今天學到的 FILTER 就會是你最「省步驟、最有回報」的工具:不只是一鍵篩選,更能做到動態更新、同時處理多條件(例如地區+年齡範圍),還能把結果格式化得更清晰(用 VSTACK 統整標題、用 CHOOSECOLS 控制只顯示你要的欄位),再配合 SEARCH+ISNUMBER 解決「不完全相符」的查找問題,讓報表和資料分析真正走向自動化。
接下來就建議你直接把影片的公式套用到自己的工作檔案裡:
✅ 先用 FILTER 做第一層篩選(地區/條件)
✅ 再加上多重條件(用 ADN 的邏輯去包起來)
✅ 最後用 VSTACK、CHOOSECOLS 把輸出變成「你看得懂、你用得上」的報表
你想更快上手的話,現在就留言告訴我:你目前工作上最常需要篩選的條件是什麼(例如:部門+日期、產品+金額區間、客戶層級+地區),我可以再按你的情境給建議公式寫法。喜歡這種「由入門到進階、一步一步可直接用」的教學,也記得按讚、訂閱,並開啟小鈴鐺–下一集我會帶你把 FILTER 玩到更實戰、更貼近報表需求。

中央大學數學碩士,董老師從2011年開始網路創業,教導網路行銷,並從2023年起專注AI領域,特別是AI輔助創作。本網站所刊載之文章內容由人工智慧(AI)技術自動生成,僅供參考與學習用途。雖我們盡力審核資訊正確性,但無法保證內容的完整性、準確性或即時性且不構成法律、醫療或財務建議。若您發現本網站有任何錯誤、過時或具爭議之資訊,歡迎透過下列聯絡方式告知,我們將儘速審核並處理。如果你發現文章內容有誤:點擊這裡舉報。一旦修正成功,每篇文章我們將獎勵100元消費點數給您。如果AI文章內容將貴公司的資訊寫錯,文章下架請求請來信(商務合作、客座文章、站內廣告與業配文亦同):[email protected]


