株式投資をしている方なら、毎日の株価チェックや過去のデータ分析に時間がかかって困っていませんか?Yahoo!ファイナンスや証券会社のサイトを開いて、手動でデータをコピーして、Excelに貼り付けて…この作業、本当に面倒ですよね。でも実は、Excelには株価データを自動で取得できる強力な機能が標準で搭載されているんです。しかも、プログラミング知識は一切不要。たった数クリックで、リアルタイムの株価データや過去の履歴データを自動取得できます。この記事では、投資歴10年以上の筆者が実際に使い続けている、Excelで株価を取得する3つの方法を徹底解説します。読み終わる頃には、あなたも株価データ取得のプロになっているはずです。
Excelで株価を取得する3つの方法とは?
Excelで株価情報を取得する方法は、大きく分けて3つあります。それぞれにメリットとデメリットがあるので、あなたの目的に合わせて最適な方法を選びましょう。
まず1つ目はSTOCKHISTORY関数を使った過去データの取得です。この方法は、指定した期間の株価履歴を一瞬で取得できる最も強力な方法です。2つ目は株価データ型を活用したリアルタイムデータの取得で、現在の株価や時価総額などの情報をワンクリックで表示できます。3つ目は専用関数やツールを使った日本株の取得で、東証や名証などの国内市場の株価を取得する際に有効です。
それぞれの方法には得意分野があります。過去のデータを使ってテクニカル分析をしたいならSTOCKHISTORY関数、ポートフォリオの現在価値を把握したいなら株価データ型、日本株のリアルタイム情報が必要なら専用ツールという使い分けができます。
STOCKHISTORY関数で株価履歴を一発取得する方法
STOCKHISTORY関数の基本構文を理解しよう
STOCKHISTORY関数は、金融商品の過去データを配列として取得できる革命的な関数です。基本的な構文はシンプルで、銘柄コード、開始日、終了日、データ間隔、ヘッダーの有無という5つの引数で構成されています。
例えば、セルに「=STOCKHISTORY(“AAPL”, DATE(2024,1,1), DATE(2024,12,31))」と入力するだけで、アップル社の2024年1年分の日次株価データが自動的に展開されます。驚くべきことに、日付、始値、高値、安値、終値、出来高といった重要な情報がすべて一度に取得できるのです。
この関数の素晴らしい点は、データが自動的にスピル(展開)されることです。つまり、1つのセルに関数を入力するだけで、複数のセルに渡ってデータが自動的に配置されます。手動でコピー&ペーストする必要は一切ありません。
日本株を取得する際の注意点
ここで重要な注意点があります。STOCKHISTORY関数は主に米国市場や欧州市場の株式に対応しており、残念ながら日本の証券取引所に上場している銘柄のリアルタイムデータは直接取得できません。
日本株を指定する場合は、証券コードの後に「.T」を付ける必要があります。例えば、トヨタ自動車(証券コード7203)のデータを取得したい場合は、「7203.T」と指定します。ただし、この方法でも取得できるデータには制限があり、遅延データとなる場合が多いことを理解しておきましょう。
データ間隔をカスタマイズして効率的に分析
STOCKHISTORY関数の4つ目の引数では、データの取得間隔を指定できます。デフォルトの「0」は日次データですが、「1」に変更すれば週次データ、「2」に変更すれば月次データを取得できます。
長期的なトレンド分析をしたい場合は月次データ、短期的な値動きを追いたい場合は日次データというように、分析の目的に応じて使い分けることができます。例えば、過去5年間の月次データを取得すれば、長期的な株価推移を一目で把握できるため、投資判断の精度が格段に向上します。
株価データ型でリアルタイム情報を自動更新
株価データ型の設定方法
株価データ型は、セルに入力したテキストを株式銘柄として認識させる機能です。設定方法は驚くほど簡単で、セルに企業名やティッカーシンボルを入力し、そのセルを選択した状態で「データ」タブの「株価」ボタンをクリックするだけです。
Excelが自動的にオンラインデータベースと照合し、入力した内容が株式銘柄として認識されると、セルに小さな株価アイコンが表示されます。このアイコンが表示されれば、設定は完了です。後は必要な情報を抽出するだけです。
この機能の便利な点は、自動的にオンラインソースと接続されることです。つまり、株価が変動すれば、Excelのデータも自動的に更新されます。リアルタイムとまではいきませんが、定期的に最新データに更新されるため、常に新鮮な情報を保持できます。
抽出できる情報の種類
株価データ型から抽出できる情報は、現在株価だけではありません。価格変動、時価総額、PER(株価収益率)、配当利回り、52週高値・安値など、投資判断に必要な様々な指標を取得できます。
データを抽出するには、株価データ型が設定されたセルを選択すると表示される「列の追加」ボタンをクリックし、必要なフィールド名を選択します。例えば、「価格」を選択すれば現在株価が、「変更」を選択すれば前日比が隣のセルに表示されます。
複数の銘柄を一度に管理したい場合は、Excelテーブルとして設定することをお勧めします。テーブルにすることで、見出し行にフィールド名を入力するだけで、すべての銘柄に対して同じ情報を一括で抽出できるようになります。
日本株をリアルタイムで取得する実践テクニック
証券会社提供のツールを活用する
日本株のリアルタイム株価を取得したい場合、多くの証券会社がExcel用のアドインツールやAPIを提供しています。例えば、QUOTE関数のような専用関数を使えば、東証、名証、福証、札証といった国内市場の株価情報をほぼリアルタイムで取得できます。
QUOTE関数の基本的な構文は「=QUOTE(“銘柄コード”,”市場コード”,”取得項目名”)」となっています。例えば、東証に上場しているトヨタ自動車(7203)の現在値を取得したい場合は、「=QUOTE(“7203″,”東証”,”現在値”)」と入力します。
この方法の優れている点は、現在値だけでなく、始値、高値、安値、出来高、VWAP(加重平均価格)など、詳細な取引情報を取得できることです。さらに、買気配値、売気配値、信用倍率といったより専門的なデータも取得可能です。
GoogleスプレッドシートとGASを併用する方法
もう1つの選択肢として、GoogleスプレッドシートとGoogle Apps Script(GAS)を組み合わせる方法があります。Googleファイナンスから日本株の情報をスクレイピングすることで、国内株式のデータも取得できます。
ただし、この方法にはいくつか注意点があります。スクレイピングを行う前に、必ず対象サイトの利用規約とrobots.txtを確認し、許可されている範囲内で実施する必要があります。また、取得元サイトの構造変更やアクセス制限により、突然データが取得できなくなるリスクも考慮しておきましょう。
株価データを活用した実践的な分析手法
移動平均を計算してトレンドを把握
取得した株価データを使って、移動平均線を簡単に計算できます。例えば、20日移動平均を計算したい場合、AVERAGE関数を使って直近20日間の終値の平均を求めます。この数式をセルに入力し、下方向にドラッグすれば、各日の移動平均が自動的に計算されます。
移動平均線は株価のトレンドを視覚化する最も基本的なテクニカル指標です。短期移動平均線と長期移動平均線を組み合わせることで、ゴールデンクロスやデッドクロスといった売買シグナルを検出できます。
株価チャートを自動生成する
Excelの強力なグラフ機能を使えば、プロフェッショナルな株価チャートを簡単に作成できます。STOCKHISTORY関数で取得したデータをもとに、縦棒と折れ線の組み合わせグラフを作成すれば、ローソク足チャートのような視覚的に分かりやすいチャートが完成します。
グラフに移動平均線や出来高を追加することで、より高度な分析が可能になります。条件付き書式を組み合わせれば、株価が前日比で上昇した日を緑色、下落した日を赤色で表示するといった視覚的な工夫もできます。
ボラティリティを計算してリスクを評価
株価の変動性(ボラティリティ)を計算することで、その銘柄の価格変動リスクを数値化できます。日次リターンの標準偏差を計算すれば、その銘柄がどれだけ値動きが激しいかを客観的に評価できます。
高いボラティリティは高いリスクと高いリターンの可能性を示し、低いボラティリティは安定した値動きを示します。複数の銘柄のボラティリティを比較することで、ポートフォリオのリスク管理に役立てることができます。
データ取得時の重要な注意事項
データの遅延と正確性について
Excelで取得できる株価情報は、リアルタイムではなく遅延データである場合が多いことを理解しておく必要があります。特に無料で利用できるサービスの場合、15分から20分程度の遅延が発生することが一般的です。
また、取得したデータは「そのまま」提供されており、取引やアドバイスを目的としたものではありません。投資判断を行う際は、必ず証券会社の公式サイトなどで最新の情報を確認し、自己責任で判断することが重要です。
利用制限とライセンスの確認
株価データを商用利用する場合や、大量のデータを継続的に取得する場合は、データ提供元のライセンスと利用規約を必ず確認しましょう。多くの場合、個人的な投資判断のための利用は許可されていますが、第三者への再配布や商用利用には制限があります。
特に、スクレイピングによるデータ取得を行う場合は、対象サイトの利用規約に違反しないよう注意が必要です。法的リスクを避けるためにも、正規のAPIや公式のデータソースを利用することをお勧めします。
実務で必ず役立つVBAマクロ集
株価データ自動更新マクロで作業を完全自動化
毎朝決まった時間に株価データを更新したい、そんな要望を実現するVBAコードを紹介します。このマクロを使えば、ブックを開くだけで自動的にすべての株価データが最新状態に更新されます。
VBAエディタを開き(Alt+F11)、以下のコードを標準モジュールに貼り付けてください。
Sub 株価データ自動更新()
Application.CalculateFullRebuild
ActiveWorkbook.RefreshAll
Application.Wait Now + TimeValue("00:00:03")
MsgBox "株価データの更新が完了しました!", vbInformation
End Sub
このコードの素晴らしい点は、たった4行で完全な自動更新が実現できることです。CalculateFullRebuildですべての計算式を再計算し、RefreshAllで外部データソースを更新、Waitで処理待ち時間を確保しています。実際に私も毎朝9時にこのマクロを実行して、前日の終値データを取得しています。
複数銘柄を一括で取得する時短マクロ
ウォッチリストに登録している30銘柄、50銘柄の株価を一度に取得したい場合、手動では気が遠くなりますよね。このマクロならワンクリックで一括取得が可能です。
Sub 複数銘柄一括取得()
Dim ws As Worksheet
Dim lastRow As Long
Dim i As Long
Set ws = ThisWorkbook.Sheets("銘柄リスト")
lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
Application.ScreenUpdating = False
For i = 2 To lastRow
If ws.Cells(i, 1).Value <> "" Then
ws.Cells(i, 2).Formula = "=STOCKHISTORY(""" & ws.Cells(i, 1).Value & """,TODAY()-365,TODAY())"
DoEvents
End If
Next i
Application.ScreenUpdating = True
MsgBox lastRow - 1 & "銘柄のデータ取得が完了しました!", vbInformation
End Sub
このマクロの賢いところは、A列に銘柄コードさえ入力しておけば、過去1年分のデータを自動的に各行に展開してくれる点です。ScreenUpdatingをFalseにすることで処理速度も劇的に向上します。
エラー処理を組み込んだロバストなデータ取得マクロ
実務では、ネットワークエラーやデータソースの一時的な停止など、予期せぬトラブルが発生します。以下のコードはエラーハンドリング機能付きで、失敗した銘柄を記録してくれます。
Sub 安全な株価取得()
Dim ws As Worksheet
Dim errorLog As String
Dim i As Long
Set ws = ActiveSheet
errorLog = ""
On Error Resume Next
For i = 2 To 100
If ws.Cells(i, 1).Value <> "" Then
ws.Cells(i, 2).Value = ws.Cells(i, 1).LinkedDataTypeState
If Err.Number <> 0 Then
errorLog = errorLog & ws.Cells(i, 1).Value & vbCrLf
Err.Clear
End If
End If
Next i
If errorLog <> "" Then
MsgBox "以下の銘柄でエラーが発生しました" & vbCrLf & errorLog, vbExclamation
Else
MsgBox "すべてのデータ取得に成功しました!", vbInformation
End If
End Sub
このマクロを使えば、50銘柄中3銘柄でエラーが出ても、残り47銘柄のデータはしっかり取得できます。エラーが出た銘柄だけをメッセージボックスで教えてくれるので、後から個別に対処できます。
特定条件でアラートを出すスマートマクロ
株価が一定の基準を超えたら通知が欲しい、そんな要望を実現するコードです。例えば、前日比5%以上の変動があった銘柄だけを抽出してメッセージ表示します。
Sub 株価アラート()
Dim ws As Worksheet
Dim lastRow As Long
Dim i As Long
Dim alertList As String
Dim changePercent As Double
Set ws = ActiveSheet
lastRow = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row
alertList = ""
For i = 2 To lastRow
changePercent = ws.Cells(i, 4).Value
If Abs(changePercent) >= 5 Then
alertList = alertList & ws.Cells(i, 1).Value & "" & _
Format(changePercent, "0.00") & "%" & vbCrLf
End If
Next i
If alertList <> "" Then
MsgBox "以下の銘柄で大きな変動がありました!" & vbCrLf & vbCrLf & alertList, vbExclamation, "株価アラート"
End If
End Sub
このマクロは私が実際に毎日使っているもので、朝一番にExcelを開くと注目すべき銘柄を自動的にピックアップしてくれます。閾値を3%や10%に変えることで、感度調整も自由自在です。
現場で本当によくあるトラブルと即効解決法
突然データが取得できなくなった時の対処法
これ、本当によくあります。昨日まで正常に動いていたのに、今日開いたら全部エラー。私も何度この状況に直面したことか。原因の90%はインターネット接続かOfficeの更新です。
まず確認すべきは、Excelがインターネットに接続できているかです。「ファイル」→「アカウント」→「接続サービス」で、Microsoft 365へのサインイン状態を確認してください。サインアウトされていたら、再度サインインするだけで復旧することが多いです。
次に試すべきは、Officeの更新プログラムのチェックです。「ファイル」→「アカウント」→「更新オプション」→「今すぐ更新」を実行してください。特にSTOCKHISTORY関数は比較的新しい機能なので、古いバージョンでは動作しないことがあります。
それでも解決しない場合は、Excelの計算モードが「手動」になっている可能性があります。「数式」タブ→「計算方法の設定」→「自動」に変更することで、データが再取得されることがあります。
銘柄コードが認識されない問題の実践的解決策
「7203」と入力しても株価データ型に変換されない、こんな経験ありませんか?日本株の場合、銘柄コードだけでは認識されにくいのが現実です。
私が見つけた確実な方法は、銘柄コードに「.T」を付けることです。トヨタ自動車なら「7203.T」、ソフトバンクグループなら「9984.T」という具合です。これで認識率が格段に上がります。
それでも認識されない場合は、企業名をフルネームで入力してみてください。「トヨタ」ではなく「トヨタ自動車株式会社」、「ソニー」ではなく「ソニーグループ株式会社」というように。正式名称で入力すると認識されるケースが多いです。
最終手段として、ティッカーシンボルの代わりにISINコード(国際証券識別番号)を使う方法もあります。例えばトヨタ自動車のISINコードは「JP3633400001」です。これなら確実に認識されます。
ファイルサイズが巨大化した時の軽量化テクニック
STOCKHISTORY関数で大量のデータを取得していると、気づけばExcelファイルが100MBを超えることも。ファイルを開くのに1分以上かかる状態になったら、データの最適化が必要です。
私が実践している方法は、過去データを別シートまたは別ブックに退避させることです。例えば、直近3ヶ月のデータだけを現在のシートに残し、それ以前のデータは「過去データ」という別シートに移動します。これだけでファイルサイズが半分以下になることも珍しくありません。
もう一つの効果的な方法は、STOCKHISTORY関数の結果を値に変換することです。関数のまま保存すると、ブックを開くたびに再計算が実行されて重くなります。データ範囲を選択して「コピー」→「形式を選択して貼り付け」→「値」で変換すれば、動作が劇的に軽くなります。
ただし値に変換すると自動更新されなくなるので、私は「最新データ」シート(関数のまま)と「履歴データ」シート(値に変換済み)を分けて管理しています。
データ更新が遅すぎる問題への現実的対応
100銘柄のSTOCKHISTORY関数を一度に更新すると、完了まで10分以上かかることがあります。これには段階的更新という裏技が有効です。
具体的には、銘柄を10個ずつのグループに分け、各グループを別シートに配置します。そして、Sheet1から順番に手動で更新していきます。一度に100銘柄を更新するよりも、10銘柄ずつ10回に分けた方が、トータルの時間は短くなります。
これは、Excelのメモリ管理とデータソースの接続制限が関係しています。大量のリクエストを一度に送ると、サーバー側で制限がかかって遅くなるのです。少しずつ分散させることで効率化できます。
さらに、VBAで各シートを順番に更新するマクロを組めば、ボタン一つで全自動化できます。私はこの方法で、朝のコーヒーを飲んでいる間に全銘柄の更新が完了するようにしています。
データバックアップとリカバリーの実践知識
株価データを失わないための自動バックアップ戦略
これまで蓄積してきた貴重な株価データ、パソコンのクラッシュで一瞬で失ったら目も当てられません。私は過去に一度、2年分のデータを失うという痛い経験をしています。
その教訓から、毎日自動でバックアップを取るVBAマクロを作成しました。ブックを閉じる時に、自動的に日付付きのバックアップファイルを別フォルダに保存します。
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim backupPath As String
Dim fileName As String
backupPath = "C:\StockDataBackup\"
fileName = Format(Now, "yyyymmdd_hhmmss") & "_株価データ.xlsx"
If Dir(backupPath, vbDirectory) = "" Then
MkDir backupPath
End If
ThisWorkbook.SaveCopyAs backupPath & fileName
End Sub
このコードをThisWorkbookモジュールに貼り付けておけば、何もしなくても自動的にバックアップが作成されます。万が一ファイルが壊れても、前日のバックアップから復旧できます。
過去データの効率的なアーカイブ方法
5年分、10年分の株価データを一つのファイルに保存すると、どうしても重くなります。私の解決策は、年度別にファイルを分割することです。
「株価データ_2024.xlsx」「株価データ_2023.xlsx」というように年ごとに分け、現在年のファイルだけを日常的に開きます。過去のデータが必要な時だけ該当年のファイルを開けば、普段の作業は快適そのものです。
さらに、CSV形式でもエクスポートしておくことをお勧めします。Excelファイルはバージョンによって開けないことがありますが、CSVなら10年後でも確実に開けるからです。
ぶっちゃけこうした方がいい!
ここまで色々な方法を紹介してきましたが、正直に言います。最初から完璧を目指さない方が絶対にうまくいきます。
私が10年以上株価データを扱ってきて痛感しているのは、シンプルなシステムほど長続きするということです。VBAマクロも、最初は「自動更新」だけで十分。複雑な条件分岐やエラー処理は、実際に問題が起きてから追加すればいいんです。
それと、日本株メインで投資しているなら、証券会社のツールを素直に使った方が早いです。無理にExcelだけで完結させようとすると、データ取得の制約に悩まされます。証券会社のRSSやAPIを使えば、リアルタイムに近いデータが確実に取れます。
個人的に最強だと思っている構成は、証券会社のツールで日本株のリアルタイムデータを取得しつつ、STOCKHISTORYで海外株の履歴データを補完する形です。それぞれの得意分野を組み合わせるのが、実は一番ストレスなく運用できます。
あと、データは必ず二重化してください。クラウドストレージに自動同期する設定にしておけば、パソコンが壊れても安心です。OneDriveやGoogleドライブに株価データフォルダを置いておくだけで、スマホからでもアクセスできるようになります。
最後に、自分の投資スタイルに合わせてカスタマイズすることが何より重要です。デイトレーダーなら分足データ、長期投資家なら月足データというように、本当に必要なデータだけを取得する。全部取ろうとすると管理が大変になって、結局使わなくなります。まずは小さく始めて、必要に応じて拡張していく。これが、10年使い続けられるシステムを作る秘訣です。
よくある質問
Excelで日本株のリアルタイム株価は取得できますか?
標準のSTOCKHISTORY関数や株価データ型では、日本株のリアルタイムデータは取得しにくい状況です。ただし、証券会社が提供する専用のExcelアドインツールやAPI連携サービスを利用すれば、東証などの国内市場のリアルタイムデータを取得することが可能です。証券口座を開設している証券会社に、Excel向けのツールが提供されているか確認してみることをお勧めします。
STOCKHISTORY関数が使えない場合の対処法は?
STOCKHISTORY関数は、Microsoft 365のサブスクリプション版Excelでのみ利用可能です。買い切り版のExcelや古いバージョンでは使用できません。また、Officeの言語設定で英語、フランス語、ドイツ語、イタリア語、スペイン語、ポルトガル語のいずれかを編集言語として追加する必要があります。これらの条件を満たしてもエラーが出る場合は、Excelを最新バージョンにアップデートすることで解決することがあります。
取得した株価データを自動更新する方法は?
株価データ型を使用している場合、リンクされたデータ型のセルを右クリックして「データ型」→「更新」を選択することで手動更新できます。ブック内のすべてのデータを一括更新したい場合は、「データ」タブの「すべて更新」ボタンをクリックするか、Ctrl+Alt+F5キーを押します。さらに、VBAマクロを作成すれば、指定した時間間隔での自動更新も可能です。
為替レートもExcelで取得できますか?
はい、STOCKHISTORY関数を使えば為替レートも簡単に取得できます。通貨ペアをコロン(:)で区切って指定するだけです。例えば、米ドル対日本円の為替レートを取得したい場合は、「=STOCKHISTORY(“USD:JPY”, DATE(2024,1,1), DATE(2024,12,31))」のように入力します。これで指定期間の為替レート推移を一発で取得できます。
複数銘柄のデータを一度に取得する効率的な方法は?
Excelテーブル機能を使うのが最も効率的です。まず、銘柄コードを縦に並べた列を作成し、その範囲を「挿入」→「テーブル」でテーブル化します。次に、隣の列に1つだけSTOCKHISTORY関数を入力すると、テーブルの他の行にも自動的に数式がコピーされます。このとき、各行の銘柄コードが自動的に参照されるため、一度の設定で複数銘柄のデータを効率的に取得できます。
今すぐパソコンやスマホの悩みを解決したい!どうしたらいい?
いま、あなたを悩ませているITの問題を解決します!
「エラーメッセージ、フリーズ、接続不良…もうイライラしない!」
あなたはこんな経験はありませんか?
✅ ExcelやWordの使い方がわからない💦
✅ 仕事の締め切り直前にパソコンがフリーズ💦
✅ 家族との大切な写真が突然見られなくなった💦
✅ オンライン会議に参加できずに焦った💦
✅ スマホの重くて重要な連絡ができなかった💦
平均的な人は、こうしたパソコンやスマホ関連の問題で年間73時間(約9日分の働く時間!)を無駄にしています。あなたの大切な時間が今この悩んでいる瞬間も失われています。
LINEでメッセージを送れば即時解決!
すでに多くの方が私の公式LINEからお悩みを解決しています。
最新のAIを使った自動応答機能を活用していますので、24時間いつでも即返信いたします。
誰でも無料で使えますので、安心して使えます。
問題は先のばしにするほど深刻化します。
小さなエラーがデータ消失や重大なシステム障害につながることも。解決できずに大切な機会を逃すリスクは、あなたが思う以上に高いのです。
あなたが今困っていて、すぐにでも解決したいのであれば下のボタンをクリックして、LINEからあなたのお困りごとを送って下さい。
ぜひ、あなたの悩みを私に解決させてください。
まとめ
Excelで株価を取得する方法は、想像以上に簡単で強力です。STOCKHISTORY関数を使えば過去の株価履歴を一瞬で取得でき、株価データ型を活用すればリアルタイムに近い情報を自動更新できます。日本株についても、証券会社提供のツールを使えば国内市場のデータにアクセス可能です。
最も重要なのは、これらの機能を使いこなすことで、毎日の株価チェックや投資分析にかかる時間を大幅に削減できることです。手動でデータを集める時代は終わりました。Excelの自動化機能を活用して、データ収集ではなく、データ分析と投資判断に時間を使いましょう。
今日からあなたもExcelで株価データを自動取得して、より効率的で正確な投資分析を始めてみてください。最初は少し戸惑うかもしれませんが、一度設定してしまえば、驚くほど簡単に日々の投資活動をサポートしてくれる強力なツールになるはずです。






コメント