Google Sheets - 用 FILTER 輕鬆過濾數據(以股票數據為例)
Posted on Feb 9, 2023 in Google 試算表 by Amo Chen ‐ 2 min read
試算表的資料很多的情況下,是很難用肉眼進行分析(除非你先天技能火眼金睛),所以通常會先過濾出我們感興趣的資料後再進行分析。
這時候就不得不提 FILTER 函式有多好用了!
本文實際以 個股日收盤價及月平均價 作爲範例,教大家如何用 FILTER 輕鬆過濾數據。
FILTER
FILTER 函式的使用方法如下:
=FILTER(資料範圍, 過濾條件1, 過濾條件2, ...)
只要指定資料範圍後,就可以代入 1 個以上的過濾條件。
過濾條件的寫法必須為運算結果只有 TRUE 或 FALSE 的條件式,例如下列條件是代表運算 A2 到最後 1 列中,所有值是否大於 30:
A2:A > 30
上述運算式搭配 FILTER 就會變成:
=FILTER(A2:D, A2:A > 30)
上述公式代表過濾出以 A 欄為主,從 A2 開始過濾出 A 欄 > 30 的資料。
了解大概之後就實際以個股日收盤價及月平均價進行操作吧!
過濾股價月平均值區間
以下列資料為例:
假設我們對月平均價在 30 ~ 40 塊之間的標的有興趣的話,就可以使用公式:
=FILTER(A2:D, D2:D >= 30, D2:D <= 40)
p.s. 因為原始資料第 1 列是欄位名稱,所以範圍資料範圍是 A2 開始,條件式也跟著是從第 2 列開始運算
上述公式含有 2 個條件式,分別是找出 D 欄大於等於 30 以及 D 欄小於等於 40 。
執行後結果如下,可以看到順利過濾出月平均價在 30 ~ 40 之間的股票標的:
過濾文字
前述範例是對於數值的運算式,很多時候我們也需要針對文字進行過濾,例如指過濾含有特定文字的資料,這時最簡單的做法就是新增一個新的欄位判斷是否含有特定文字,例如下圖的是否為 KY 股一欄, FALSE 代表不含 -ky
文字, TRUE 代表含 -ky
文字:
判斷是否含有特定文字的公式為:
=IF(ISERROR(SEARCH("特定文字", 欄位代號)), FALSE, TRUE)
SEARCH 是不分大小寫的文字查找函式,如果 SEARCH 無法在文字中找到特定文字會回傳 #VALUE!
的錯誤,因此需要用 IF 搭配 ISERROR 判斷 SEARCH 是否回傳錯誤,如果回傳錯誤代表不含特定文字,將欄位值設為 FALSE
;沒有任何錯誤則代表含有特定文字,將欄位值設為 TRUE
。
例如判斷是否含有 -ky
在股票名稱中:
=IF(ISERROR(SEARCH("-KY", B2)), FALSE, TRUE)
有了額外欄位可供判斷之後,就可以進一步用 FILTER 過濾出 KY 股:
=FILTER(A2:E, D2:D >= 30, D2:D <= 40, E2:E)
上述公式執行結果如下,可以看到正確過濾出價格在 30 ~ 40 之間的 KY 股:
總結
以上就是 FILTER 的用法介紹,本文範例可以在此試算表查閱。
References
https://support.google.com/docs/answer/3094154
https://support.google.com/docs/answer/3093349
https://support.google.com/docs/answer/3093364
https://support.google.com/docs/answer/3093197