更新日:

投資判断や日々の資産管理には、最新の株価を把握することが欠かせません。そこでおすすめしたいのがエクセルの活用です。本記事では、定番の関数をはじめ、外部データ連携から証券会社API活用まで、株価を自動で取得するための方法を解説します。
株価自動取得とは何?
Microsoft エクセルにはインターネット上の金融データサービスと連携し、株価情報を自動で取得・更新する仕組みがあります。主な取得方法は、①STOCKHISTORY関数、②VBA、③Webクエリが挙げられます。銘柄コードを入力するだけで、現在値・前日比・高値安値などを自動反映できるため、手入力での管理が不要になります。さらに、最新データを基に分析や資産管理を効率化できますので、日々の情報収集や投資判断をスムーズに行えます。
自動取得の3つの主要方法
エクセルで株価を取得する3つの主要な方法について、それぞれの特徴をいくつかの視点から比較してみます。
| データの鮮度 | 難易度 | 費用 | 自動売買設定 | |
|---|---|---|---|---|
| ①excel標準関数 | 15~20分の遅延データ | 簡単(関数の入力のみ) | 無料(Microsoft365等) | 単独では不可 |
| ②外部データサービス | 15~20分の遅延データ~リアルタイムデータ | 中(データ接続の設定要) | 無料~有料 | 原則不可 |
| ③証券会社API | リアルタイムデータ | 高(VBAや専用ツール) | 無料~有料 | 単独で可能 |
| データの鮮度 | 難易度 | 費用 | 自動売買設定 | |
|---|---|---|---|---|
| ①excel標準関数 | 15~20分の遅延データ | 簡単 (関数の入力のみ) |
無料 (Microsoft365等) |
単独では不可 |
| ②外部データサービス | 15~20分の遅延データ~リアルタイムデータ | 中 (データ接続の設定要) |
無料~有料 | 原則不可 |
| ③証券会社API | リアルタイムデータ | 高 (VBAや専用ツール) |
無料~有料 | 単独で可能 |
手軽に株価データの収集や過去の分析を始めるなら、関数を入力するだけの①のエクセル標準関数が最も準備が不要で簡易に始められます。ただし、市場の値動きに連動したリアルタイムなデータ取得ができないほか、取得できるデータも限られます。
また、既に証券会社等で株式を保有されている場合は、資産管理面からも③の証券会社APIをご利用いただくことがオススメです。
②の外部データサービスは、取得できるデータが提供元によって変わりますので、詳しいデータを利用して詳細な投資シミュレーションを行いたいといった上級者向けのものが多いといえます。まずは、用途に合わせて使い分け、段階的にステップアップをしていくのが良いでしょう。
【方法①】エクセル標準関数(STOCKHISTORY関数)での自動取得
構文と使い方
STOCKHISTORY関数は、銘柄コードと期間を指定して過去の株価を取得できます。基本構文は以下の通りです。
※Microsoft 365サブスクリプション版限定の機能です。
=STOCKHISTORY(stock, start_date, [end_date], [interval], [headers], [property1], ...)
- 開始日・終了日はDATE(2026,1,1)のように年・月・日で指定する
- 開始日だけ指定し終了日を省略すると、最新日まで取得される
- interval引数で取得間隔の設定が可能
例えば、日本株の「7203(トヨタ自動車)」を対象にする場合、=STOCKHISTORY("7203.T",DATE(2026,1,1),DATE(2026,1,31))と入力すると、2026年1月の株価が一覧で表示されます。
ティッカーに「.T」(Tは東京証券取引所を意味します)を付けることで日本株として認識され、日付範囲を変えるだけで時系列データの取得ができますので、手始めにはお試しいただきやすい機能です。
主要なパラメータ一覧
| パラメータ | 内容 | 数値 |
|---|---|---|
| Stock | 銘柄コード | ティッカー形式で指定 |
| Interval | データ取得間隔 | 0=日次、1=週次、2=月次 |
| Headers | 見出し表示 | 0=非表示、1=表示 |
| リアルタイムデータ | 取得項目 | 0=非表示、1=表示 0=日付、1=終値、2=始値、 3=高値、4=安値、5=出来高 |
銘柄を指定する方法
- 株価取得時にティッカー形式で銘柄を指定する
- 日本株は銘柄コードに「.T」(例:7203.T)を付ける
- 米国株はそのままティッカー(例:MSFT)を使用する
- 市場によっては接尾辞が必要
ティッカーシンボルの入力
株価データを取得する際は、対象銘柄を正しい形式で指定する必要があります。
日本株は証券コードの末尾に市場識別子「.T」を付与し、「7203.T」のように東京証券取引所の銘柄として指定します。一方、米国株は「MSFT」「AAPL」のように英語のティッカーシンボルをそのまま使用します。また、市場によっては「.L(ロンドン)」や「.HK(香港)」などの接尾辞が付与され、市場ごとのデータを正しく取得するために用いられます。
銘柄名・セル参照での指定
銘柄を指定する際は、日本語ではなくシステムが認識できる英語名やコード(ティッカー)を使用します。
日本語名では表記ゆれによる検索エラーの原因となるため、米国株の「MSFT」や、日本株の市場コード付きの表記を正確に入力することが、エラーを回避して安定取得するポイントです。
さらに、STOCKHISTORY関数の銘柄指定に「セル参照」を使えば、より動的な運用が可能になります。
例えば、関数の銘柄部分に直接コードを書き込まず、=STOCKHISTORY(A1, DATE(2026,1,1), DATE(2026,1,31)) のようにA1セルを指定します。こうすることで、A1セルの値を別の銘柄に書き換えるだけで取得結果が自動更新され、毎回数式を修正する手間が省けます。
この仕組みを利用して、A列に複数の銘柄コードを並べてリスト化すれば、各株価を一括で取得・管理できるようになり、複数銘柄の比較分析がスムーズになります。
日付の指定方法とデータの間隔
- 開始日・終了日はDATE(2026,1,1)のように年・月・日で指定する
- 開始日だけ指定し終了日を省略すると、最新日まで取得される
- interval引数で取得間隔の設定が可能
取得期間の設定
STOCKHISTORY関数などで日付を指定する際、DATE関数を使うことで地域設定に依存しない正確な入力が可能になります。
「2026/1/31」のような文字列による手入力は、システムの地域設定によって「月/日」の解釈が変わり、エラーの原因になることがあります。一方で、DATE(2026, 1, 31) のように「年・月・日」を数値で分解して指定すれば、どのような環境でも日付が正しく認識されるため、安定したデータ取得には欠かせないテクニックです。 また、関数の引数である「終了日」を省略すると、開始日から取得可能な最新日までの株価が自動で取得されます。つまり、終了日を空欄にしておくことで、常に最新データへ自動更新される便利な仕組みを構築できます。
頻度の切替と株価情報の種類
STOCKHISTORY関数では、データの抽出頻度(間隔)や取得する情報の種類を引数で細かく指定できます。分析の目的に合わせてこれらを組み合わせることで、より実用的な投資シミュレーションや資産管理シートが作成可能です。
具体的な設定値と、投資分析における活用方法は以下の通りです。
interval引数:データの抽出頻度
| 設定値 | 取得データ | 投資分析での活用方法 |
|---|---|---|
| 0 | 日次 | 短期的な値動きやボラティリティの分析に最適 |
| 1 | 週次 | 中期的なトレンドの把握に便利(週末のスクリーニングなど) |
| 2 | 月次 | 数年〜数十年単位の長期投資における資産推移や、積立運用の検証に |
property引数:取得する情報の種類
| 設定値 | 取得データ | 投資分析での活用方法 |
|---|---|---|
| 0 | 日次 | 株価データの時系列管理やチャート作成の基準として使用し、過去データとの比較分析に活用 |
| 1 | 終値 | 株価の最終的な市場評価を示すため、トレンド分析や移動平均線、リターン計算の基準として活用 |
| 2 | 始値 | 前日終値とのギャップから市場の反応や需給変化を把握するために活用 |
| 3 | 高値 | 上昇の勢いや上値抵抗ラインの分析に活用 |
| 4 | 安値 | 下落リスクの把握やサポートライン分析に活用 |
| 5 | 出来高 | 価格変動の強さや市場参加者の関与度の判断に活用 |
複数の銘柄の取得方法
- 銘柄コードと取得期間(開始日・終了日・間隔)をセルに一覧化して基準データを作成する
- STOCKHISTORY関数を銘柄ごとに設定し、同一条件で統一して入力する
- 関数を下方向へコピーして展開し、複数銘柄の株価データを一括で取得する
- 日付を共通キーとして扱い、取得結果を横並びに整理して比較可能な形にする
- 必要に応じてテーブル化し、更新時にも自動反映される構造にする
一括取得の手順
複数のSTOCKHISTORY関数を効率的に配置するには、まず取得する銘柄と期間を一覧化したセル範囲を作成し、参照元を明確にすることが重要です。銘柄コードは縦方向に整理し、隣列に関数を入力することでコピー展開しやすくなります。また、取得結果の表示範囲が動的に広がるため、十分な空白スペースを確保しておくとエラーを防げます。
データ整理のコツとして、日付列を統一し、複数銘柄のデータを横並びまたはテーブル形式に整形すると比較分析が容易になります。さらに、テーブル機能やフィルターを活用することで、更新時の可読性と管理効率が向上します。
銘柄比較のテクニック
複数銘柄の株価比較表を作成するには、STOCKHISTORY関数で各銘柄の終値を同一期間・同一間隔で取得し、日付を共通の基準列としてデータを揃えることが重要です。
取得したデータは銘柄ごとに横並びで整理し、比較しやすい表形式に整えます。さらに、初日の価格を100として指数化することで、価格水準の違いを排除し、純粋な値動きの比較が可能になります。
グラフ化では折れ線グラフを用いることで、各銘柄のパフォーマンス推移を視覚的に把握できます。相対パフォーマンス分析では、上昇率だけでなくトレンドの継続性や下落時の耐性も確認することで、より実践的な銘柄比較が行えます。
取得したデータの加工と分析
- 取得データはまず時系列データとして整理し、平均値や標準偏差(STDEV関数)などの基本統計量を用いて、全体の水準と変動の大きさを把握する
- 次に、移動平均(AVERAGE関数)やRSIなどの指標を用いて、価格のトレンド方向や過熱感を分析する
- 最後に、ローソク足チャートや折れ線グラフ、条件付き書式による色分けを活用し、数値情報を視覚的に分かりやすく可視化する
分析指標の作成
| 指標 | 概要 |
|---|---|
| 移動平均 | 一定期間の終値を平均し、価格の方向性を確認する指標です。 例えば5日移動平均は、直近5日終値の平均を毎日更新します。B列に数値がある場合、エクセルでは =AVERAGE(B2:B6) のように計算できます。 |
| 標準偏差(ボラティリティ) | 価格変動の大きさを示し、値が大きいほど変動が激しい状態です。 上記同列の数値を用いた場合、エクセルでは =STDEV.P(B2:B21) を用います。 |
| RSI(Relative Strength Index) | 一定期間の値上がり幅と値下がり幅から買われ過ぎ・売られ過ぎを判断する指標で、一般的に14日を使用します。 計算式は、「平均上昇幅÷(平均上昇幅+平均下落幅)×100」です。 |
| 自動発注・売買連携 | あらかじめ設定した条件(例:株価が指定の価格以下になった場合など)に基づき、Excelから証券口座へ直接注文を送信できます。 |
AVERAGE関数で平均上昇幅、STDEV関数で価格変動を同時に算出することで、トレンドとリスクを組み合わせた分析が可能です。
グラフ表示のコツ
VBAで定期更新を行うには、Application.OnTime機能を利用します。この機能は指定時刻にマクロを実行する仕組みですが、実行した処理の最後で「現在時刻の〇分後」を次回実行時刻として再設定し、自分自身を繰り返し呼び出すことで、一定間隔の自動実行を実現します。
外部からデータを自動取得する際は、Web通信を行うオブジェクトを組み合わせて利用します。その際、ネットワークの遮断やサーバーダウンによるマクロの強制終了を防ぐため、エラーを検知して安全に処理をスキップまたは再試行するエラーハンドリングの構築が必須です。
さらに、プログラムからの機械的なアクセスとみなされてサーバーから拒否されるのを防ぐため、ブラウザからのアクセスを装うUser-Agent情報の設定も欠かせません。
これらを組み合わせることで、手動操作なしで安定して最新データを取得し続ける、信頼性の高い自動更新システムが構築できます。ただし、設定を正確に行わないと、エラーの繰り返し処理が行われて過大な負荷がかかる場合などもありますので、設定後は必ず実行結果を確認することが肝要です。
データの自動更新の設定
- VBAのOnTimeで一定間隔ごとに自動更新を実行する
- 更新頻度は「Now + TimeValue」で5分ごとなど任意に設定可能
- HTTP通信とUser-Agent設定で安定してデータ取得を行い、エラーハンドリングで停止を防ぐ
マクロによる定期実行
株価チャートは、始値・高値・安値・終値(OHLC)および出来高データを用いて作成します。Excelでは対象データ範囲を選択し、「挿入」→「株価チャート」を選択することでローソク足等を表示できます。
移動平均線を併用する場合は、AVERAGE関数により5日・25日などの移動平均を別列で算出し、折れ線としてチャートに追加します。
視覚的な分析を高めるためには、色・基準線・補助指標の整理が重要です。ローソク足は陽線を緑、陰線を赤に統一することで値動きの方向が直感的に把握できます。また、短期・中期の移動平均線を重ねることでトレンドの変化を分かりやすく確認できます。さらに、価格帯に水平線を引くことでサポート・レジスタンスが明確になり、相場の節目や反発ポイントを読み取りやすくなります。
条件付き書式では、前日比の増減に応じた色分け(例:B列に数値がある場合 =B2 > B1で緑、=B2 < B1で赤)に加え、RSIが70以上を赤、30以下を青とすることで過熱感を可視化できます。
これらを組み合わせることで、トレンド・変動・売買タイミングを同時に把握でき、分析精度の向上につながります。
【方法②】外部データサービス接続での自動取得
- JPX(日本取引所グループ)の公式APIやYahoo! Financeなどのデータ提供元と、Excelを直接「連携」させて株価を取得する方法
- Excelの標準関数に頼る方法とは異なり、自分の目的に合わせて最適なデータソース(情報の提供元)を柔軟に選べる点が最大のメリット
- 関数ではカバーしきれない高度な財務データや、過去の長期間にわたる詳細な時系列データなども、シート上に直接取り込んで一元管理できる
Power Query(Webクエリ)での接続手順
外部サービスからデータを取り込む際は、Excelの標準機能である「Power Query(パワー・クエリ)」を使用します。
これを使ってWeb上の株価データを取得する基本手順は以下の通りです。
データソースのURL指定
「データ」タブの「Webから」を選び、取得したい株価ページのURLを入力します。
テーブル選択
画面に表示されるWebページの構造から、目的の株価テーブルを選択します。
読み込み
必要に応じてデータを整形し、「閉じて読み込む」でシートに出力します。
更新
以降は「すべて更新」ボタンを押すだけで、最新データへと自動更新されます。
データサービス利用時の注意点
外部データサービスを利用する際は、以下の点に注意が必要です。
まず、データの商用利用や転載の可否について各サービスの利用規約を必ず確認しましょう。
次に、データの更新頻度です。無料版の多くは一定時間の遅延(ディレイ)を伴うデータが一般的ですが、配信元によっては配信間隔が異なる場合があります。また、有料プランを導入することで、リアルタイムに近い情報を取得できるケースもあります。
用途とコストのバランスを考慮し、最適なプランを選択することが大切です。
【方法③】証券会社のAPI接続での自動取得
- 証券会社が公式に提供しているAPIを利用して、株価データをExcelに取り込む方法
- 他の方法に比べてタイムラグの少ないリアルタイムなデータを取得しやすい点が特徴
- 株価データの収集や分析にとどまらず、あらかじめ設定した条件に応じてExcelから口座へ直接注文を出す「自動発注(自動売買)」までシステムを拡張できる
データサービス利用時の注意点
証券会社が提供するAPIを活用することで、Excel上での資産管理やトレーディング環境を大幅に拡張できます。Excelから利用する際は、主にVBA(マクロ)や証券会社が用意している専用の連携ツールを経由して操作を行います。
API経由で実現できる主な機能と、その活用例は以下の通りです。
| 実現できること | 概要と活用例 |
|---|---|
| リアルタイム株価の取得 | 市場の値動きと連動した価格データの更新。デイトレードや高頻度の価格監視など、鮮度の高いデータを必要とする分析に使用します。 |
| 板情報(気配値)の取得 | 買い注文と売り注文の状況をリアルタイムで把握。市場の需給バランスを分析し、売買のタイミングを検討する材料にできます。 |
| 口座残高・保有資産の照会 | 現在の保有銘柄や現金残高、含み損益の取得。手動入力の手間を省き、最新の総資産状況をシート上で一元管理できます。 |
| 自動発注・売買連携 | あらかじめ設定した条件(例:株価が指定の価格以下になった場合など)に基づき、Excelから証券口座へ直接注文を送信できます。 |
SBIネオトレード証券のAPIサービス
Excelでの資産管理や分析をさらに一歩進めるツールとして、当社では「ネオトレAPI for Excel」を提供しています。これは当社の証券システムとExcelを直接連携し、使い慣れたワークシート上で株価情報の取得から発注までを完結できる機能です。
プログラミングの知識がない方でも、画面上の項目を選ぶだけで四本値や出来高、ランキングなどのデータを取得できる機能もありますので、Excelの関数や操作に不慣れな方でも手軽にお試しいただけます。また、口座の余力や残高照会だけでなく、Excel上からの直接発注や、OCO・IFDといった特殊注文にも対応しています。
さらに、Excelの関数やVBAを活用することで、複数銘柄の一括注文やお客様独自の売買ルールに沿った自動化の構築も可能です。ゼロからスタートするのは難しすぎると感じられる方も少なくありませんので、当社ではあらかじめ画面レイアウトや関数等が設定済みのサンプルシートもご用意しておりますので、ご活用ください。
本機能のご利用にあたっては、口座開設後にお申し込みが必要です。
Webブラウザ版の取引ツール「NEOTRADE W」のログイン後画面から直接申請するか、必要書類を当社へメールで送信することでお手続きが可能です(※ 無料でご利用いただけます)。
まとめ
Excelで株価を自動取得する方法は、目的に応じた使い分けが大切です。過去のデータをもとにした簡易的な情報収集なら「Excel標準関数」、より専門的な銘柄分析や検証作業なら「外部データサービス」が適しています。
一方、タイムラグのないリアルタイム分析や銘柄監視、さらには発注や資産管理まで行うなら、証券会社APIの活用が最善の方法です。
当社では、Excelと直接連携してこれらを実現できる「ネオトレAPI for Excel」を提供しています。リアルタイムなデータ取得や自動売買に関心のある方は、ぜひ口座開設のうえ、当社のAPIサービスをご活用ください。
SBIネオトレード証券WEBサイト編集チーム
SBIネオトレード証券WEBサイト編集チームは、個人投資家の皆さまに向けて、信用取引や株式投資に関する情報を分かりやすくお届けするため、コンテンツの企画・執筆・編集を行っています。
掲載内容に関するご質問・ご意見はお問い合わせフォームよりご連絡ください

