跳到主要內容跳到頁尾

FILTER 入門:用一個條件篩出你要的資料

6 分鐘閱讀Lv.1 初學者摘要與日期

FILTER 的語法、單一條件怎麼寫、兩個條件的 AND 與 OR,以及沒有符合資料時的 #N/A。原始資料不動,結果放在別處。

發布 更新

文章目錄

今天要來聊聊 FILTER,把表格裡符合條件的列挑出來,放到另一個地方。

它和選單裡的「篩選器」最大的不同是:原本的資料完全不動,原始資料有改,挑出來的結果也會跟著變。

手動篩有多麻煩

我手上還是那張手搖飲的訂單紀錄,一共 10 筆,分成信義和板橋兩間門市:

ABC
1品項門市杯數
2蘋果紅茶信義12
3烏龍奶茶板橋37
4蘋果綠茶信義8
5蘋果紅茶板橋21
6烏龍奶茶信義5
7青茶板橋29
8蘋果綠茶板橋9
9蘋果紅茶信義12
10青茶信義17
11烏龍奶茶板橋37

我想只看「板橋」的訂單。手動的話,要一列一列看 B 欄,是板橋的就複製到別的地方,資料每天新增的話,還得每天重做一次,有點太麻煩了吧!這時候就可以請 FILTER 出場。

FILTER

FILTER 會檢查範圍的每一列,只留下符合條件的列,結果放在別處,原本的資料維持原樣。

語法

  • 範圍:要篩選的資料。
  • 條件1:一欄(或一列)由 TRUE 和 FALSE 組成的值,位置和「範圍」的每一列一一對應,TRUE 的那一列會被留下來。
  • 條件2, ...:選填,可以接著再加條件,每多一個,就多一個要同時滿足的限制。

官方說明有特別寫,每個條件的長度必須和範圍完全一樣。範圍框 A2:C11 是 10 列,條件也要是 10 列。長度對不上時, 會得到 #N/A(不是 #VALUE!),提示是「FILTER 的範圍大小不符。應該有 10 列 1 欄,實際卻指定了 9 列 1 欄。」。

另外 FILTER 一次只能篩列,或只篩欄,不能同時篩。

單一條件

我想找「門市是板橋」的訂單。條件要寫成一欄 TRUE 和 FALSE,也就是拿 B 欄的每一格去比對是不是「板橋」:B2:B11="板橋"。

如果要用 FILTER 寫,就是:

Google 試算表公式
fx

篩出門市是板橋的整列訂單

=FILTER(A2:C11, B2:B11="板橋")
  • A2:C11:範圍,整張訂單,不含標題列。
  • B2:B11="板橋":條件,B 欄是「板橋」的那幾列會是 TRUE。

先手算一下,B 欄是板橋的有第 3、5、7、8、11 列,共 5 筆。在 E2 輸入公式,按下 Enter,結果會從 E2 往下、往右展開成 5 列 3 欄。來看看結果:

品項門市杯數
烏龍奶茶板橋37
蘋果紅茶板橋21
青茶板橋29
蘋果綠茶板橋9
烏龍奶茶板橋37

整列都帶過來,順序和原本的資料一樣。

只要其中一欄

範圍不一定要框整張表。我只想要信義門市賣過什麼品項,那範圍就只框 A 欄:

Google 試算表公式
fx

只取品項欄,條件看門市欄

=FILTER(A2:A11, B2:B11="信義")

範圍和條件是各自指定的,只要列數一樣就可以。結果是 5 列 1 欄:蘋果紅茶、蘋果綠茶、烏龍奶茶、蘋果紅茶、青茶。

數字條件

條件也可以拿數字比較。我想看杯數大於 15 的訂單:

Google 試算表公式
fx

篩出杯數大於 15 的訂單

=FILTER(A2:C11, C2:C11>15)

來看看結果:

品項門市杯數
烏龍奶茶板橋37
蘋果紅茶板橋21
青茶板橋29
青茶信義17
烏龍奶茶板橋37

兩個條件

同時滿足(AND)

我想看「板橋門市,而且杯數大於 15」。官方的寫法就是把第二個條件接在後面:

Google 試算表公式
fx

板橋門市且杯數大於 15

=FILTER(A2:C11, B2:B11="板橋", C2:C11>15)

每個條件之間用逗號隔開,所有條件都是 TRUE 的列才會留下來。這個逗號寫法是 Sheets 才有的:Excel 的 FILTER 第三個參數是 if_empty,逗號接的條件會被當成「沒有資料時顯示的內容」,Excel 要用 * 把條件乘起來才是且,說明看 FILTER 進階陷阱。來看看結果:

品項門市杯數
烏龍奶茶板橋37
蘋果紅茶板橋21
青茶板橋29
烏龍奶茶板橋37

和上一個杯數大於 15 的結果比,少了信義的青茶 17 杯。

符合其中一個(OR)

「杯數少於 10 或大於 35」這種任一個成立就好的條件,逗號是做不到的。我常用的寫法是把兩個條件用 + 加起來:

Google 試算表公式
fx

杯數小於 10 或大於 35

=FILTER(A2:C11, (C2:C11<10) + (C2:C11>35))

每個比較式會各自得到 TRUE 或 FALSE,加起來只要不是 0,那一列就會被留下來。兩個比較式要各自用括號包起來。來看看結果:

品項門市杯數
烏龍奶茶板橋37
蘋果綠茶信義8
烏龍奶茶信義5
蘋果綠茶板橋9
烏龍奶茶板橋37

更多條件怎麼組、條件放在儲存格裡讓別人切換,之後會在實戰那篇再講。

沒有符合的資料

如果我把條件改成 B2:B11="中和",訂單裡根本沒有中和門市:

Google 試算表公式
fx

篩一個不存在的門市

=FILTER(A2:C11, B2:B11="中和")

結果會是 #N/A。官方說明也寫找不到符合條件的值時回傳 #N/A,我實測滑鼠移上去的提示是「系統計算 FILTER 時找不到相符項目。」。Excel 的 FILTER 在這種情況回的是 #CALC!,不是 #N/A。

自己看是沒關係,不過要給別人看的報表,一個 #N/A 容易讓人以為壞掉了。我會用 IFNA 包起來,它只處理 #N/A,公式其他地方出了別種錯誤不會被一起蓋掉:

Google 試算表公式
fx

沒有符合時顯示文字

=IFNA(FILTER(A2:C11, B2:B11="中和"), "沒有符合的訂單")

這樣儲存格會顯示「沒有符合的訂單」。

注意結果會往旁邊展開

FILTER 的結果會自己往下、往右展開,所以公式下面和右邊要留空。如果展開的路上有別的資料擋住,公式會出現 #REF!。我習慣把 FILTER 放在獨立的工作表,或是一塊空的區域。這類展開的細節,之後會放在 FILTER 的進階陷阱那篇。

練習

1

信義門市、杯數至少 10 杯

用 A2:C11 的訂單,篩出門市是「信義」,而且杯數大於或等於 10 的整列訂單。要怎麼寫?

小測驗

FILTER 入門

0 / 3 題已完成
1

FILTER 找不到任何符合條件的列時,會回傳什麼?

1 / 3

試著用用看吧!篩出來的結果還想排序的話,把 FILTER 放進 SORT 裡面就可以了,可以看 SORT 與 UNIQUE。

接著可以看 FILTER 實戰,做一張用下拉選單切換的報表,或是 FILTER 常見錯誤,整理 #N/A、#REF! 和部分比對。

我是喜特先生,Mr. Sheet,我們下個教學見!

這個步驟如果每週都要重做

現在
每天把新訂單依門市手動挑出來,再傳給各店負責人
自動化後
每天自動把各門市的新訂單整理好,寄給各店負責人
有類似需求,可以來信聊聊
分享:
喜特先生 Mr. Sheet

喜特先生 Mr. Sheet

數據分析師/商業分析師

八年工作經驗,跨不同業界解決數據需求。做過的案例都整理在作品集。

接下來可以

這篇在技能樹的 Lv.2「進階分析」,模組「篩選與整理資料」(第 1/2 篇)。

回到技能樹

相關文章

查看所有文章

留言討論

共 0 則留言

訂閱電子報,新文章上線就通知你

免費,隨時可取消。

送出即表示同意服務條款與隱私權政策。