「スプレッドシートで株価や為替レートを手軽に確認できたらいいのに」と思ったことはありませんか。
毎回ネットで検索して数字を手入力していると、時間もかかるしミスも起きやすいですよね。
そんなときに便利なのが、Googleスプレッドシート専用の GOOGLEFINANCE関数です。セルに数式を入れるだけで、最新の株価や為替レートを自動取得できます。
この記事では、GOOGLEFINANCE関数の基本構文から、ポートフォリオ管理・為替換算・過去データ取得などの応用例、よくあるエラーの対処法まで実例付きで紹介します。
GOOGLEFINANCE関数とは?
GOOGLEFINANCE関数(読み方: ぐーぐる ふぁいなんす)は、Google Financeのデータを使って株価や為替レートなどの金融情報を取得する関数です。
Googleスプレッドシート独自の関数なので、Excelでは使えません。
GOOGLEFINANCE関数にできることをまとめると、次のとおりです。
- リアルタイム(最大20分遅延)の株価を取得する
- 通貨ペアの為替レートを取得する
- 過去の株価データ(履歴)を期間指定で取得する
- 時価総額・PER・配当利回り・ベータ値などの指標を確認する
- 投資信託のNAV(基準価額)を取得する
ポートフォリオ管理シートや為替換算表を、コピー&ペーストなしで自動更新できるのが最大のメリットです。
NOTE
GOOGLEFINANCE関数はGoogleスプレッドシート専用です。データはGoogle Financeから提供されており、最大20分の遅延があります。リアルタイム取引には向きませんが、日常的な確認用途には十分です。
CAUTION
この記事で紹介する株価データの活用例は情報提供を目的としたものです。投資判断は自己責任で行ってください。
GOOGLEFINANCE関数の書き方(構文と引数)
基本構文
=GOOGLEFINANCE(ティッカー, [属性], [開始日], [終了日|日数], [間隔])
カッコの中にティッカーシンボル(銘柄コード)を指定します。属性以降は省略可能です。
引数の説明
| 引数 | 必須/任意 | 説明 |
|---|---|---|
| ティッカー | 必須 | 銘柄コードまたは通貨ペア(例: "GOOG", "TYO:7203", "USDJPY") |
| 属性 | 任意 | 取得したい情報の種類(省略時は "price") |
| 開始日 | 任意 | 履歴データの開始日(日付またはDATE関数) |
| 終了日/日数 | 任意 | 履歴データの終了日または開始日から数えた日数 |
| 間隔 | 任意 | "DAILY" または "WEEKLY"(省略時は "DAILY") |
ティッカーだけを指定すると、現在の株価(price)が返されます。
TIP
日本株のティッカーは「TYO:証券コード」の形式です。たとえばトヨタ自動車なら
"TYO:7203"と指定します。米国株はそのまま"AAPL""MSFT"のようにティッカーを使えます。
GOOGLEFINANCE関数の基本的な使い方
現在の株価を取得する
まずはシンプルに、現在の株価を取得してみましょう。
=GOOGLEFINANCE("GOOG")
Googleの親会社アルファベット(ティッカー: GOOG)の現在の株価が表示されます。
日本株の場合は証券コードの前に TYO: を付けます。
=GOOGLEFINANCE("TYO:7203")
トヨタ自動車(証券コード: 7203)の現在の株価です。
為替レートを取得する
通貨ペアを指定すると、為替レートを取得できます。
=GOOGLEFINANCE("USDJPY")
米ドル/日本円のレートが返されます。通貨コードを2つつなげて指定するのがポイントです。
ほかにもよく使う通貨ペアを挙げておきます。
| 数式 | 取得できるレート |
|---|---|
=GOOGLEFINANCE("USDJPY") | 米ドル → 日本円 |
=GOOGLEFINANCE("EURJPY") | ユーロ → 日本円 |
=GOOGLEFINANCE("GBPJPY") | 英ポンド → 日本円 |
=GOOGLEFINANCE("AUDJPY") | 豪ドル → 日本円 |
=GOOGLEFINANCE("EURUSD") | ユーロ → 米ドル |
=GOOGLEFINANCE("CURRENCY:USDJPY") | 米ドル → 日本円(明示指定) |
TIP
通貨コードの順番に注意してください。
"USDJPY"は「1ドルが何円か」、"JPYUSD"は「1円が何ドルか」を返します。逆向きを指定すると意図しない値になります。
取得できる属性一覧
第2引数の「属性」を変えると、株価以外の情報も取得できます。よく使う属性をまとめました。
| 属性 | 説明 | 数式例 |
|---|---|---|
"price" | 現在の株価(デフォルト) | =GOOGLEFINANCE("GOOG","price") |
"priceopen" | 当日の始値 | =GOOGLEFINANCE("GOOG","priceopen") |
"high" | 当日の高値 | =GOOGLEFINANCE("GOOG","high") |
"low" | 当日の安値 | =GOOGLEFINANCE("GOOG","low") |
"volume" | 当日の出来高 | =GOOGLEFINANCE("GOOG","volume") |
"marketcap" | 時価総額 | =GOOGLEFINANCE("GOOG","marketcap") |
"pe" | 株価収益率(PER) | =GOOGLEFINANCE("GOOG","pe") |
"eps" | 1株あたり利益(EPS) | =GOOGLEFINANCE("GOOG","eps") |
"shares" | 発行済株式数 | =GOOGLEFINANCE("GOOG","shares") |
"change" | 前日比の変動額 | =GOOGLEFINANCE("GOOG","change") |
"changepct" | 前日比の変動率(%) | =GOOGLEFINANCE("GOOG","changepct") |
"beta" | ベータ値(市場との連動度) | =GOOGLEFINANCE("GOOG","beta") |
"currency" | 取引通貨 | =GOOGLEFINANCE("GOOG","currency") |
TIP
属性は大文字・小文字どちらでも指定できます。
"price"と"PRICE"は同じ結果です。
履歴データ用の属性
過去データを取得するときには、専用の属性を使います。
| 属性 | 説明 |
|---|---|
"open" | 期間内の始値 |
"close" | 期間内の終値 |
"high" | 期間内の高値 |
"low" | 期間内の安値 |
"volume" | 期間内の出来高 |
"all" | 上記すべて(5列で展開) |
履歴データは複数行・複数列に展開されるため、十分な空きスペースを確保してから入力するのがコツです。
GOOGLEFINANCE関数の実践的な使い方・応用例
ポートフォリオ管理シートを作る
保有銘柄の一覧と評価額を自動計算するシートを作ってみましょう。
A列にティッカー、B列に保有株数を入力し、C列で現在株価を取得、D列で評価額を計算します。
| A(ティッカー) | B(保有株数) | C(現在株価) | D(評価額) | |
|---|---|---|---|---|
| 1 | ティッカー | 保有株数 | 現在株価 | 評価額 |
| 2 | GOOG | 10 | =GOOGLEFINANCE(A2) | =B2*C2 |
| 3 | AAPL | 20 | =GOOGLEFINANCE(A3) | =B3*C3 |
| 4 | TYO:7203 | 100 | =GOOGLEFINANCE(A4) | =B4*C4 |
C2 に =GOOGLEFINANCE(A2) と入力すれば、A列のティッカーに応じた株価が自動で取得されます。D2 の =B2*C2 で保有株数と掛け算すれば評価額の完成です。
銘柄を増やしても数式をコピーするだけなので管理が楽ですよ。
円建ての評価額にしたい場合は、為替レートを掛けます。
=B2*C2*GOOGLEFINANCE("USDJPY")
これで米ドル建ての銘柄も日本円換算で並べられます。
為替換算表を作る
海外取引の金額を日本円に換算する表も簡単に作れます。
=B2*GOOGLEFINANCE("USDJPY")
B2 にドル建ての金額が入っていれば、現在の為替レートで日本円に換算した結果が返されます。
複数通貨を扱う場合は、通貨コードをセルに入れておいて動的に切り替えると便利です。
=B2*GOOGLEFINANCE(A2&"JPY")
A2 に USD や EUR などの通貨コードを入れておけば、通貨に応じたレートで自動換算されます。3文字の通貨コードと「JPY」を文字列結合(&)するのがポイントです。
過去の株価データを取得する
GOOGLEFINANCE関数は過去の株価データも取得できます。開始日と終了日を指定すると、複数行にわたってデータが展開されます。
=GOOGLEFINANCE("GOOG","close",DATE(2025,1,1),DATE(2025,12,31),"DAILY")
2025年1月1日から12月31日までの終値が日次で返されます。
結果は「日付」と「Close(終値)」の2列が自動的に展開されるので、空いたセル範囲に数式を入れてください。
TIP
履歴データは複数セルに展開されます。展開先にデータがあるとエラーになるので、十分な空きスペースを確保しておきましょう。
間隔を "WEEKLY" に変えると、週次データに切り替わります。長期の傾向を確認したいときに便利です。
=GOOGLEFINANCE("GOOG","close",DATE(2025,1,1),DATE(2025,12,31),"WEEKLY")
直近30日の株価チャートを作る
履歴データとスパークラインを組み合わせれば、ミニチャートも作れます。
=SPARKLINE(GOOGLEFINANCE("GOOG","price",TODAY()-30,TODAY()))
SPARKLINE関数の中で GOOGLEFINANCE を直接使うと、セル内に直近30日の株価推移を折れ線グラフで表示できます。ダッシュボードや日次レポートに最適です。
騰落率(前日比)を一覧表示する
属性 "changepct" を使うと、前日比の変動率を取得できます。
| 銘柄 | 現在値 | 前日比(%) |
|---|---|---|
| GOOG | =GOOGLEFINANCE(“GOOG”,”price”) | =GOOGLEFINANCE(“GOOG”,”changepct”) |
| AAPL | =GOOGLEFINANCE(“AAPL”,”price”) | =GOOGLEFINANCE(“AAPL”,”changepct”) |
| TYO:7203 | =GOOGLEFINANCE(“TYO:7203″,”price”) | =GOOGLEFINANCE(“TYO:7203″,”changepct”) |
IFERROR関数と組み合わせれば、エラーが出る銘柄も表が崩れずに表示できます。
=IFERROR(GOOGLEFINANCE(A2,"changepct"),"取得不可")
複数銘柄のミニチャートウォッチリストを作る
各行にミニチャートを並べた「ウォッチリスト」を作ると、複数銘柄の値動きをひと目で把握できます。
SPARKLINE関数の中で、過去データを取得するGOOGLEFINANCEを呼び出すのがポイントです。
A列に銘柄名、B列に現在値、C列に前日比、D列に30日チャートを並べた表を作ってみましょう。
| A(ティッカー) | B(現在値) | C(前日比%) | D(30日チャート) | |
|---|---|---|---|---|
| 1 | ティッカー | 現在値 | 前日比% | 30日チャート |
| 2 | AAPL | =GOOGLEFINANCE(A2,”price”) | =GOOGLEFINANCE(A2,”changepct”) | (下記の数式) |
| 3 | MSFT | =GOOGLEFINANCE(A3,”price”) | =GOOGLEFINANCE(A3,”changepct”) | (下記の数式) |
| 4 | GOOG | =GOOGLEFINANCE(A4,”price”) | =GOOGLEFINANCE(A4,”changepct”) | (下記の数式) |
D列のチャートには、次の数式を入れます。
=SPARKLINE(GOOGLEFINANCE(A2,"price",TODAY()-30,TODAY()),{"charttype","line";"color","#1a73e8";"linewidth",1.5})
TODAY()-30 から TODAY() までの直近30日分の株価を取得し、セル内に折れ線グラフとして描画します。第2引数のオプションでは線の種類・色・太さを指定しています。
D2 に入力したらD3・D4へ下にコピーするだけで、各行に対応した銘柄のミニチャートが並びます。
オプションを変えると見た目も調整できます。たとえば棒グラフにしたいときは "charttype","column" に変更します。
=SPARKLINE(GOOGLEFINANCE(A2,"price",TODAY()-30,TODAY()),{"charttype","column";"color","#34a853"})
TIP
ミニチャートには終値(price/close)を使うのがコツです。
"high"や"all"などを指定すると複数列の二次元配列が返り、SPARKLINEがうまく描画できません。1列のデータに絞りましょう。
前日比のプラス・マイナスで色を変えたい場合は、IFERROR関数でラップしつつ条件付き書式を併用すると、上昇銘柄と下落銘柄が直感的に見分けられるウォッチリストになります。
損益計算付きポートフォリオテーブルを作る
評価額だけでなく、取得単価からの損益まで自動計算する本格的なポートフォリオテーブルも作れます。
A列からG列までを次のように構成します。B列の取得単価・C列の保有株数は手入力、D列以降は数式で自動計算します。
| A(ティッカー) | B(取得単価) | C(保有株数) | D(現在株価) | E(取得額) | F(評価額) | G(損益額) | |
|---|---|---|---|---|---|---|---|
| 1 | ティッカー | 取得単価 | 保有株数 | 現在株価 | 取得額 | 評価額 | 損益額 |
| 2 | AAPL | 150 | 20 | =IFERROR(GOOGLEFINANCE(A2,”price”),””) | =B2*C2 | =D2*C2 | =F2-E2 |
| 3 | MSFT | 300 | 10 | =IFERROR(GOOGLEFINANCE(A3,”price”),””) | =B3*C3 | =D3*C3 | =F3-E3 |
| 4 | GOOG | 130 | 15 | =IFERROR(GOOGLEFINANCE(A4,”price”),””) | =B4*C4 | =D4*C4 | =F4-E4 |
各列の意味と数式を整理しておきます。
- D列(現在株価):
=IFERROR(GOOGLEFINANCE(A2,"price"),"")で現在値を取得 - E列(取得額):
=B2*C2で取得単価 × 保有株数 - F列(評価額):
=D2*C2で現在株価 × 保有株数 - G列(損益額):
=F2-E2で評価額 − 取得額
さらに損益率(パーセント)を見たい場合は、H列を追加します。
=G2/E2
損益額を取得額で割れば、何パーセントの含み益・含み損かが一目でわかります。セルの表示形式を「パーセント」にしておくと見やすくなります。
D列でGOOGLEFINANCEをIFERROR関数でラップしているのには理由があります。市場が閉まっている時間帯や、一時的にデータが取得できないときに #N/A が出ても、評価額や損益の計算が崩れないようにするためです。
米国株を日本円換算で管理したい場合は、評価額の数式に為替レートを掛けます。
=D2*C2*GOOGLEFINANCE("CURRENCY:USDJPY")
これでドル建ての株価を円建ての評価額に変換でき、円ベースで損益を把握できます。
TIP
取得単価が外貨建ての場合は、取得額(E列)にも同じ為替の考え方を適用しないと損益がずれます。円換算で管理するなら、取得時のレートを別途記録しておくと正確です。
よくあるエラーと対処法
GOOGLEFINANCE関数で「値が取れない」ケースをまとめました。
| 症状 | 原因 | 対処法 |
|---|---|---|
#N/A エラーが出る | ティッカーが間違っている | Google Financeで正しいティッカーを確認する。日本株は TYO: を付ける |
#N/A エラーが出る | 属性名のスペルミス | "price" "high" "low" など正しい属性名を確認する |
#REF! エラーが出る | 履歴データの展開先にデータがある | 展開先のセルを空にしておく |
#ERROR! が出る | 引数のカンマや引用符の不足 | 数式バーで構文を見直す |
| 値が更新されない | スプレッドシートのキャッシュ | セルを再編集するか、シートを再読み込みする |
| 古い株価が表示される | Google Financeのデータ遅延(最大20分) | リアルタイムではなく遅延データであることを理解する |
| 日本株の値が取れない | 証券コードだけを指定している | "TYO:7203" のように取引所コードを付ける |
| 為替が取得できない | 通貨コードが逆または間違い | "USDJPY" のように正しい通貨コードの組み合わせにする |
| 仮想通貨が取れない | 一部銘柄は対応していない | 対応外の場合は別APIを検討する |
TIP
ティッカーが正しいか確認するには、Google Financeでキーワード検索してみてください。検索結果に表示されるティッカーをそのまま使えます。
エラーをスマートに処理する
複数銘柄を扱うとき、1つでもエラーが出ると表全体が崩れてしまいます。IFERROR関数でラップしておくと安心です。
=IFERROR(GOOGLEFINANCE(A2,"price"),"-")
エラーの場合はハイフン(-)が表示されるので、表のレイアウトを保てます。
Excelとの違い(Excelには存在しない)
GOOGLEFINANCE関数はGoogleスプレッドシート専用の関数です。Excelには同じ関数がありません。
Excelで株価を取得したい場合は、STOCKHISTORY関数やデータ型(株式データ型)を使います。
| 比較項目 | GOOGLEFINANCE関数(Sheets) | STOCKHISTORY関数(Excel) |
|---|---|---|
| 対応環境 | Googleスプレッドシートのみ | Microsoft 365 / Excel 2024 |
| データソース | Google Finance | Microsoft提携の金融データプロバイダー |
| リアルタイム性 | 最大20分遅延 | 遅延あり(プロバイダーによる) |
| 為替レート | 対応(通貨ペア指定) | 非対応(株価のみ) |
| 過去データ | 対応(日次・週次) | 対応(日次・週次・月次) |
| 指標(PER等) | 対応(属性で指定) | 非対応 |
| 料金 | 無料(Googleアカウントのみ) | Microsoft 365サブスクリプション必要 |
為替レートの取得や指標の確認まで無料でできるのは、GOOGLEFINANCE関数ならではの強みです。
Excelでの株価データ取得についてはExcelのSTOCKHISTORY関数の記事で解説しています。
よくある質問(FAQ)
Q1. GOOGLEFINANCE関数はExcelでも使えますか?
いいえ、Googleスプレッドシート専用です。Excelには同じ関数がないので、ExcelではSTOCKHISTORY関数や株式データ型を使ってください。
Q2. データはどのくらいリアルタイムですか?
Google Financeの公式仕様では「最大20分遅延」とされています。日中の値動きを正確に追いたい用途には不向きですが、終値ベースのポートフォリオ管理や日次レポートなら十分実用的です。
Q3. 仮想通貨の価格は取得できますか?
"BTCUSD" のように一部の主要ペアは取得できる場合がありますが、対応状況は変動します。安定して取得したい場合は、CoinGecko などの専用APIをImportJSONで呼び出す方法を検討してください。
Q4. 投資信託の基準価額(NAV)は取得できますか?
米国の投資信託(ティッカーが付いているもの)は取得できます。日本の公募投信は対応外なので、運用会社のCSVをIMPORTDATA関数で取り込む方法が現実的です。
Q5. シートを開かなくても自動更新されますか?
GOOGLEFINANCE関数はシートを開いたとき・編集したときに更新されます。シートを閉じている間は更新されません。バックグラウンドで定期更新したい場合は、Google Apps Script(GAS)でトリガーを組む必要があります。
Q6. 複数銘柄をまとめて取得することはできますか?
ティッカーをセル参照(A列など)にして、各行で =GOOGLEFINANCE(A2) のようにコピーするのが基本です。配列でまとめて取得したい場合は、ARRAYFORMULA関数と組み合わせる方法もあります。
=ARRAYFORMULA(IFERROR(GOOGLEFINANCE(A2:A10),""))
Q7. データを履歴として残すにはどうすればいいですか?
GOOGLEFINANCE関数は常に最新値を返すため、過去のスナップショットは残りません。履歴を残したい場合は、Google Apps Scriptで定期的に値を別シートにコピー保存するスクリプトを書くのが定番です。
Q8. ARRAYFORMULA関数と組み合わせて複数銘柄を一括取得できますか?
基本的には推奨できません。GOOGLEFINANCEのような外部データ取得関数は、ARRAYFORMULA関数に範囲をそのまま渡しても各行へ展開されないことが多く、最初の1行だけ値が返るケースが目立ちます。
確実に動かすなら、各行に =GOOGLEFINANCE(A2) のような個別の数式を入れて下にコピーするのが安全です。どうしても1セルでまとめたい場合は、現在株価のような単一値(履歴データではないもの)に限り、次のように IFERROR でラップして試すとよいでしょう。
=ARRAYFORMULA(IFERROR(GOOGLEFINANCE(A2:A10),""))
ただし環境やデータの種類によって挙動が変わるため、過去データの取得には使わず、結果を必ず目視で確認してください。
Q9. IMPORTRANGE先のスプレッドシートでもGOOGLEFINANCEは動きますか?
GOOGLEFINANCEの数式そのものをIMPORTRANGEで他シートに渡すことはできません。IMPORTRANGEはあくまで「計算結果の値」を取り込む関数だからです。
そのため、GOOGLEFINANCEの数式は元になるスプレッドシートに直接書き、IMPORTRANGEではその結果(株価や評価額)を参照するのが正しい使い方です。
=IMPORTRANGE("元シートのURL","株価!A1:D10")
なお、取り込んだ値は元シートが開かれて更新されたタイミングで反映されます。参照側だけを開いても、元シート側のGOOGLEFINANCEが更新されていなければ古い値が表示される点に注意してください。
まとめ
GOOGLEFINANCE関数は、スプレッドシート上で株価や為替レートを自動取得できるSheets独自の関数です。
ポイントを整理します。
- 構文は
=GOOGLEFINANCE(ティッカー, [属性], [開始日], [終了日|日数], [間隔]) - ティッカーだけ指定すると現在の株価を返す
- 日本株は
"TYO:証券コード"の形式で指定する - 通貨ペア(例:
"USDJPY")を指定すると為替レートを取得できる - 属性を変えれば高値・安値・PER・時価総額・ベータ値など多彩な情報を取得可能
- 開始日・終了日を指定すると過去の株価データも取得できる
- データは最大20分遅延。リアルタイム取引には不向き
- Excelには存在しないSheets独自の関数。代替はSTOCKHISTORY関数
- エラー対策はIFERROR関数と組み合わせるのが定番
まずは =GOOGLEFINANCE("USDJPY") で今のドル円レートを確認するところから試してみてください。
