已經會用 GOOGLEFINANCE 抓一個價格後,下一步是讓同一個選項,同時驅動資訊欄、歷史表與圖表。這次做一張短期間的互動看板:換股票,就一起換資料。
本文聚焦控制區與圖表引用。語法與完整屬性清單可先看 GOOGLEFINANCE 基礎。示範代碼只用於功能練習,沒有推薦標的,也不把來源報價當成即時下單依據。
安排控制區與選項清單
在空白工作表填入:
| 位置 | 項目 | 輸入 |
|---|---|---|
A2:B2 | 選擇代碼 | NASDAQ:GOOG |
A3:B3 | 起始日 | 真正日期 2026/9/1 |
A4:B4 | 結束日 | 真正日期 2026/9/11 |
左欄放標籤,右欄放值。B3:B4 必須是試算表認得的日期數值,不是看起來像日期的文字。
在 H2:H4 放選項:
| 候選代碼 |
|---|
| NASDAQ:GOOG |
| NASDAQ:MSFT |
選 B2,建立來自 H3:H4 的下拉選單,使用單選並拒絕不在清單內的值。代碼包含交易所前綴,避免只寫股票代號而讓來源自行猜測市場。
本例起訖日相差最多 45 天,讓歷史結果能落在固定的圖表來源範圍。這是本篇看板的設計限制,不是 GOOGLEFINANCE 只能查 45 天。
建立四個資訊欄
A6:B6 填「欄位、結果」,A7:A10 依序填「現價、原幣別、延遲分鐘、最後交易時間」。
在 B7 放現價:
沒有選股票時留空,來源失敗時顯示訊息
=IF(
$B$2="",
"",
IFERROR(GOOGLEFINANCE($B$2, "price"), "無法取得報價")
)在 B8 放計價幣別:
顯示來源的計價幣別,不執行換匯
=IF(
$B$2="",
"",
IFERROR(GOOGLEFINANCE($B$2, "currency"), "無法取得幣別")
)在 B9 放延遲資訊:
延遲欄位也可能不支援或暫時無法取得
=IF(
$B$2="",
"",
IFERROR(GOOGLEFINANCE($B$2, "datadelay"), "無法取得延遲")
)在 B10 放最後交易時間:
顯示來源最後交易時間,並非本機重新整理時間
=IF(
$B$2="",
"",
IFERROR(GOOGLEFINANCE($B$2, "tradetime"), "無法取得交易時間")
)把 B10 設成日期時間格式,連同試算表時區核對。價格是數值,兩個示範股票的幣別都是 USD;日期時間與報價都會隨來源改變,不應拿文章裡某個固定數字當答案。
currency 告訴你用什麼貨幣報價,不會替你換成台幣。這個案例沒有跨幣別績效比較或自動換匯。
Google 官方提醒,報價可能延遲最多 20 分鐘,而且不是所有市場、標的與屬性都有資料;最後交易時間也不等於每次開啟看板的時間。GOOGLEFINANCE 官方說明
在另一區展開歷史每日收盤
D6 寫「歷史資料」,清空 D7:E70,在 D7 輸入:
有效短期間才向來源取得每日收盤,保留來源表頭
=IF(
$B$2="",
"請選股票",
IF(
AND(ISNUMBER($B$3), ISNUMBER($B$4)),
IF(
$B$4<$B$3,
"結束早於開始",
IF(
$B$4-$B$3>45,
"起訖日相差不可超過45天",
IFERROR(
GOOGLEFINANCE($B$2, "close", $B$3, $B$4, "DAILY"),
"無歷史資料或來源錯誤"
)
)
),
"請填有效日期"
)
)以 NASDAQ:GOOG、2026/9/1 至 9/11 為例,回傳的表頭是 Date、Close,下方有 8 筆資料,日期為 9/1、2、3、4、8、9、10、11,包含結束日 9/11。9/5、9/6 是週末,9/7 是美國勞動節休市,所以沒有那幾列。
來源正常時,結果會展開成兩欄:日期與收盤價,第一列是來源表頭。這裡保留表頭給圖表使用,不把它當成一筆價格。
起訖日用於查詢來源的歷史資料,請核對實際回傳的第一天、最後一天與交易日筆數;不要預設每天必定有一列,或把沒有回傳的日期補成 0。官方也說明日期按 UTC 中午理解,部分市場可能出現一天的落差。
若看到 #REF! 或展開失敗,先檢查 D7:E70 是否有手填內容或合併儲存格。來源錯誤與結果無法展開是不同問題,外層 IFERROR 不應成為忽略資料區阻塞的理由。
讓折線圖只引用這份結果
- 選取
D7:E70,使用「插入 → 圖表」。 - 在設定中選折線圖。來源若自動猜到包含上方段落標題的
D6,手動修正資料範圍為D7:E70。 - 勾選使用第 7 列作為標題(選取範圍的第一列),第一欄 Date 作 X 軸,第二欄 Close 作系列。
- 將圖表放在
G7附近的空白區,避開B2:B4控制區與H3:H4選項清單。 - 標題可寫「所選標的每日收盤(原幣)」,避免換股票後仍殘留另一個標的名稱。
在 B2 真正打開下拉,選 NASDAQ:MSFT,等資料載入後,同時核對資訊欄、歷史表與圖表。圖表來源範圍沒有變,變的是來源範圍裡的資料。完成練習後還原為 NASDAQ:GOOG。圖表官方說明
切換下拉選項後,資料與曲線會一同改變;還原後重新開啟設定,來源仍為 D7:E70、類型仍為折線圖。不要只看圖表看起來有一條線,就判定互動完成;應點圖表設定確認引用範圍,再對照所選代碼與回傳日期。
空白、日期與休市怎麼處理?
先從主例開始,逐項測試並還原:
| 操作 | 本例預期 |
|---|---|
清空 B2 | 四個資訊欄留空,歷史區顯示「請選股票」 |
| 結束日早於起始日 | 顯示「結束早於開始」 |
| 起始日空白或填文字 | 顯示「請填有效日期」 |
| 起訖日相差超過 45 天 | 顯示期間限制訊息 |
| 改成只有週末的短期間 | 例如 9/5 至 9/6,原始請求會是 #N/A,包裝後顯示無歷史資料或來源錯誤 |
清空選項後,圖表可能顯示沒有資料或提示;本例沒有另外控制整個圖表物件的顯示與隱藏。週末或來源缺資料時,也不應把錯誤訊息當成一個價格點。
資料錯誤時,資訊欄會顯示「無法取得報價」等訊息,歷史區顯示「無歷史資料或來源錯誤」。這些是統一的閱讀提示,不能單憑訊息判定股票不存在、一定休市,或哪一個供應端原因。
初次載入及切換股票時,IFERROR 可能短暫顯示無法取得,稍後讀值才回到真正的數值;圖表也可能暫時提示新增數列,資料還原後曲線會恢復。先等來源載入穩定再核對,不要把第一個提示立即當成永久失敗,也不要為了消除提示而填入0。
需要排錯時,把內層 GOOGLEFINANCE 的請求獨立放到另一張空白分頁,記錄原始錯誤、代碼、屬性與查詢日期。不要把故意錯誤的測例塞進正在畫圖的 D7:E70。
使用前先確認的限制
- 四個資訊欄屬於目前報價模式;歷史區使用
close。只要帶日期就進入歷史模式,不能把currency等目前欄位直接塞進同一個歷史請求。 - 本篇只比較兩個 USD 計價的示範標的;加進其他市場前,先核對支援程度、幣別與交易日,圖表不會自動統一貨幣。
- 來源可能載入中、暫時失敗或缺部分欄位。完整保留錯誤與查詢時間,不能把失敗當成 0。
- 本例用原生試算表取得歷史資料;Google 官方對 Sheets API 與 Apps Script 取得歷史資料有限制,不能把這個互動案例直接當成後端匯出介面。
- 看板以短期間與固定圖表範圍為前提。需要多年資料時,應重新設計資料與圖表範圍,而不是只刪掉日期防呆。
想把相同方式用到一般業務報表,可以接著看互動報表設計與資料驗證實戰。報價僅供功能示範與資訊參考,不構成投資建議。
本篇改寫自方格子的財經看板案例,以目前官方欄位重新建立股票互動流程。
接下來可以
相關文章
查看所有文章GOOGLEFINANCE 抓股價與匯率:台股代號、歷史收盤價、USDTWD 一次講完
GOOGLEFINANCE 的語法、常用屬性、歷史資料的寫法,台股(TPE:2330)與匯率(CURRENCY:USDTWD)怎麼填,以及資料延遲、抓不到資料時要注意什麼。依官方說明整理,文中不放任何即時價格,也不構成投資建議。
Google 試算表圖表完全指南:選對類型,3 秒看懂資料
學會根據問題選擇正確的圖表類型(折線圖看趨勢、長條圖比大小、圓餅圖看佔比),掌握配色、排序、動態更新等技巧,建立讓主管一眼就懂的視覺化報告。
資料驗證實戰:把訂單登記表的輸入錯誤擋在門口
以手搖飲門市的訂單登記表為例,設定下拉選單(含來自範圍與晶片樣式)、數字與日期範圍,再用 COUNTIF 擋重複的訂單編號、REGEXMATCH 擋格式不對的手機號碼,並說明拒絕輸入與顯示警告該怎麼選。
留言討論
共 0 則留言
