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

對抗久坐職業傷害

研究指出每天增加 2 小時坐著的時間,會增加大腸癌、心臟疾病、肺癌的風險,也造成肩頸、腰背疼痛等常見問題。

然而對抗這些問題,卻只需要工作時定期休息跟伸展身體即可!

你想輕鬆改變現狀嗎?試試看我們的 PomodoRoll 番茄鐘吧! PomodoRoll 番茄鐘會根據你所設定的專注時間,定期建議你 1 項辦公族適用的伸展運動,幫助你打敗久坐所帶來的傷害!

贊助我們的創作

看完這篇文章了嗎? 休息一下,喝杯咖啡吧!

如果你覺得 MyApollo 有讓你獲得實用的資訊,希望能看到更多的技術分享,邀請你贊助我們一杯咖啡,讓我們有更多的動力與精力繼續提供高品質的文章,感謝你的支持!