当サイトの記事にはプロモーションが含まれています。

ExcelのSTOCKHISTORY関数が2026年に不具合で使えない?原因と7つの対処法を徹底解説

パソコンパソコン・スマホ教室
スポンサーリンク

「年明けにExcelを開いたら、株価データが全部エラーになっていた」――2026年1月1日、世界中のExcelユーザーがこの悪夢に直面しました。STOCKHISTORY関数がいきなり動かなくなり、#CONNECT!#BUSYのエラーがセルを埋め尽くす事態に。しかも、デスクトップ版でもWeb版でも同じ症状が出て、再起動しても再インストールしても直らない。さらに2026年2月中旬にも再発が報告されており、この問題は一度きりの事故では終わりませんでした。

この記事では、2026年のSTOCKHISTORY関数の不具合について、なぜ起きたのか、いつ直ったのか、そして次に同じことが起きたときにあなたのワークブックを守る具体的な対策までを、初心者にもわかるように丁寧にまとめました。投資ポートフォリオの管理や年末年始の決算作業でExcelの株価機能に頼っている方は、ぜひ最後まで読んでください。

ここがポイント!

  • 2026年1月と2月に発生したSTOCKHISTORY関数の障害の全容と、復旧までの時系列整理
  • 障害の根本原因であるLSEGデータフィードとMicrosoft中継サーバーの依存構造の解説
  • 次の障害に備えるIFERROR防御式・Googleスプレッドシート併用などの実践的な7つの対処法
スポンサーリンク
  1. 2026年にSTOCKHISTORY関数で何が起きたのか?
    1. 復旧までのタイムラインを整理すると?
  2. なぜSTOCKHISTORY関数は突然動かなくなるのか?
    1. STOCKHISTORY関数はローカルで完結しない「クラウド依存型」の関数
    2. 年末年始のタイミングが偶然ではない可能性
  3. STOCKHISTORY関数の基本的な使い方をおさらいしよう
  4. 不具合が起きたときにまず試すべき7つの対処法
    1. 対処法1まずWeb版Excelで同じ数式を試す
    2. 対処法2サインアウトして再サインインする
    3. 対処法3IFERROR関数で防御式を組む(予防策)
    4. 対処法4Googleスプレッドシートのバックアップ環境を用意する
    5. 対処法5取引所コード(MIC)をティッカーに付ける
    6. 対処法6手動スナップショットを定期的に保存する
    7. 対処法7外部APIやアドインの活用を検討する
  5. そもそもSTOCKHISTORY関数は業務で頼っていいのか?
  6. 2026年登場のClaude in Excelは助けになる?
  7. ExcelとGoogleスプレッドシートの株価機能を比較してみた
  8. 情シス歴10年超のプロが教える「障害切り分け」の実践手順
    1. 切り分けステップ1別の端末・別のネットワークで再現を確認する
    2. 切り分けステップ2Excelの「データ型」全般をテストする
    3. 切り分けステップ3Microsoft 365管理センターを確認する(管理者向け)
  9. VBAで作るSTOCKHISTORY障害時の「自動防御」マクロ集
    1. マクロ1STOCKHISTORYのエラーを自動検知してログに記録する
    2. マクロ2Alpha Vantage APIから株価を取得するバックアップ関数
    3. マクロ3STOCKHISTORYの取得値を自動バックアップする仕組み
  10. 現場でよく遭遇する「あるある」トラブルと解決方法
    1. #BUSY!が永遠に消えない問題
    2. STOCKHISTORY関数が特定のティッカーだけ取れない問題
    3. 共有ブックやSharePoint上のブックでSTOCKHISTORYが動かない問題
    4. 日付のロケール問題で#VALUE!が出る罠
  11. Power Queryを使ったSTOCKHISTORYの「完全代替」手順
    1. Yahoo Finance非公式APIからPower Queryで株価履歴を取得する
  12. 情シスが社内で実際に配布している「障害対応チェックシート」の考え方
  13. ぶっちゃけこうした方がいい!
  14. ExcelのSTOCKHISTORY関数の不具合に関するよくある質問
    1. STOCKHISTORY関数のエラーはいつ直る?自分で直せないの?
    2. STOCKHISTORY関数はExcel 2021やExcel 2019でも使える?
    3. STOCKHISTORY関数の代わりに使える無料のツールはある?
    4. 障害が起きたときにMicrosoftに報告する意味はある?
    5. STOCKHISTORY関数で取得したデータは正確?取引判断に使っていいの?
  15. 今すぐパソコンやスマホの悩みを解決したい!どうしたらいい?
  16. まとめ

2026年にSTOCKHISTORY関数で何が起きたのか?

Excelのイメージ

Excelのイメージ

まずは事実関係を時系列で振り返りましょう。2025年12月31日の夕方頃から一部ユーザーの環境で異変が始まり、2026年1月1日にはほぼ全世界的にSTOCKHISTORY関数が機能停止しました。セルに表示されたメッセージは「Sorry, our server is temporarily having problems. We’re working to fix it.」という、なんとも頼りない一文。株価データだけでなく、通貨レートや地理データなど、Excelの「データ型」全般に影響が及んでいたことも大きなポイントです。

海外の大手テック系メディアであるThe Registerはこの件を「Microsoftが2026年を壊れたExcel関数で迎えた」と報じ、多くのユーザーの怒りの声を紹介しました。特に印象的だったのは、「Microsoft 365のサブスクリプション料を払っているのはSTOCKHISTORY関数のためだけなのに」という利用者の嘆きです。実際、この関数のためだけに年間サブスクリプションを契約しているトレーダーや個人投資家は少なくありません。

復旧までのタイムラインを整理すると?

障害の発生から復旧までには、地域やアカウントによってかなりの時間差がありました。ざっくり整理すると次のような流れです。

日時(UTC基準) 状況
2025年12月31日夕方 一部ユーザーで株価データの取得失敗が始まる
2026年1月1日 世界中で障害報告が急増、Web版・デスクトップ版の両方で再現
1月2日 Microsoftサポートが「サーバー側の問題」と認めるも、復旧見込みは不明
1月3日 一部ユーザーで「1〜2週間かかる」との案内。管理センターには公開インシデントなし
1月4〜5日 段階的に復旧が始まり、多くのユーザーで正常動作を確認
2月16〜18日 再びサーバー障害が発生し、数日間の断続的な不具合が報告される

注目すべきは、1月の障害だけで終わらなかった点です。Microsoft Q&Aフォーラムには「2月16日からまたサーバーが落ちている」という投稿が複数あり、2026年に入ってからすでに少なくとも2回の大規模障害が発生したことになります。The Registerの報道でも、影響を受けたユーザーの声として「年に2回は落ちる」という不満が紹介されており、これは今に始まった話ではないことがわかります。

なぜSTOCKHISTORY関数は突然動かなくなるのか?

ここが多くの方にとって最も知りたいポイントでしょう。STOCKHISTORY関数が壊れたとき、多くの人がまず疑うのは「自分のExcelの設定がおかしいのでは?」ということ。でも実際は違います。この関数の仕組みを知れば、なぜ自分では直せないのかがスッキリ理解できます。

STOCKHISTORY関数はローカルで完結しない「クラウド依存型」の関数

SUM関数やVLOOKUP関数は、セルの中にあるデータだけで計算が完結します。でもSTOCKHISTORY関数はまったく違う仕組みで動いています。あなたがセルに

=STOCKHISTORY("MSFT","2025-01-01")

と入力すると、Excelはインターネットを経由してMicrosoftのサーバーに問い合わせを送り、そのサーバーがさらに外部のデータ提供元から株価情報を受け取って、ようやくセルに数値が表示されるという流れになっています。

この「外部のデータ提供元」がLSEGデータ&アナリティクス(旧Refinitiv、ロンドン証券取引所グループ傘下のデータ企業)です。つまり、障害が起きるポイントは少なくとも3か所あります。あなたのExcelアプリ、Microsoftの中継サーバー、そしてLSEGのデータ配信基盤。2026年1月の障害では、LSEG側は「自社システムは正常」と報告していたため、Microsoft側の中継レイヤーに問題があった可能性が高いと考えられています。

年末年始のタイミングが偶然ではない可能性

2025年から2026年への年越しで壊れたというタイミングは、多くのユーザーの間で「年が切り替わったことと関係があるのでは?」という推測を呼びました。これはあくまでユーザー側の仮説であり、Microsoftから公式な原因説明は出ていません。ただし、日付に関連する処理(データの取得期間の計算やキャッシュの有効期限管理など)が年末年始のタイミングで想定外の挙動をした可能性はゼロではないでしょう。過去にも同様の年末年始トラブルが他のサービスで報告されていることを考えると、完全には否定できない仮説です。

STOCKHISTORY関数の基本的な使い方をおさらいしよう

不具合の話ばかりではつまらないので、ここでSTOCKHISTORY関数そのものについても整理しておきましょう。この関数はMicrosoft 365サブスクリプション版Excel限定の機能で、買い切り版のExcel 2021やExcel 2019では使えません。これは意外と知らない方が多いポイントです。

基本的な書式はこうなっています。

=STOCKHISTORY(銘柄コード, 開始日, , , , , , ...)

たとえば、Microsoftの2025年の日次終値を取得したい場合は

=STOCKHISTORY("MSFT","2025-01-01","2025-12-31",0,1,0,1)

と書きます。このとき銘柄コードの前に取引所コードをつけて

"XNAS:MSFT"

のように指定すると、あいまいなマッチングを避けられるのでおすすめです。為替レートも取得可能で、

=STOCKHISTORY("USD:JPY","2025-01-01")

のように通貨ペアを指定します。

結果はダイナミック配列として「スピル」され、複数のセルに自動展開されます。日付、終値、始値、高値、安値、出来高の6つのプロパティから必要なものを選んで並べられるため、そのままグラフの元データとしても使えるのが魅力です。ただし、データは市場が閉まった後に更新されるため、リアルタイムの取引判断には向いていない点は覚えておいてください。

不具合が起きたときにまず試すべき7つの対処法

さて、ここからが実践編です。STOCKHISTORY関数がエラーを返したとき、どうすればいいのか。結論から言うと、サーバー側の障害であればユーザー側でできることは限られます。しかし、それが本当にサーバー障害なのか、それとも自分の環境固有の問題なのかを切り分けることは重要ですし、障害に備えた「予防策」は今すぐ実装できます。

対処法1まずWeb版Excelで同じ数式を試す

デスクトップ版で動かないとき、最初にやるべきはブラウザからExcel Online(Web版Excel)を開いて同じワークブックを確認することです。Web版でも同じエラーが出るなら、それはほぼ確実にサーバー側の問題です。逆にWeb版では動くなら、デスクトップアプリのキャッシュやアカウント認証に問題がある可能性があります。

対処法2サインアウトして再サインインする

Excelの「ファイル」→「アカウント」からMicrosoft 365アカウントをサインアウトし、Excelを完全に終了してから再度サインインします。これで認証トークンがリフレッシュされ、接続が回復することがあります。ただし、2026年1月の大規模障害時にはこの方法では解決しなかったユーザーがほとんどでした。

対処法3IFERROR関数で防御式を組む(予防策)

これは今すぐやっておくべき最も重要な対策です。STOCKHISTORY関数をむき出しで使うのではなく、

=IFERROR(STOCKHISTORY("MSFT","2025-01-01"),"データ取得エラー")

のようにIFERROR関数で囲んでおけば、障害時にセルが#CONNECT!のままになるのを防げます。エラーメッセージをカスタマイズしておけば、障害が起きたことに素早く気づけますし、ワークブックの他の計算がエラーで連鎖的に壊れるのも防止できます。

対処法4Googleスプレッドシートのバックアップ環境を用意する

STOCKHISTORY関数に相当するGoogleスプレッドシートの関数がGOOGLEFINANCE関数です。こちらは無料のGoogleアカウントだけで使え、Microsoft側のサーバーには一切依存しないため、Excelが落ちているときの緊急バックアップとして非常に有効です。たとえば

=GOOGLEFINANCE("MSFT","price",DATE(2025,1,1),DATE(2025,12,31),"DAILY")

と書けば、同様の株価履歴を取得できます。ただし、データの提供元が異なるため、数値に若干の差が出ることがある点は理解しておきましょう。

対処法5取引所コード(MIC)をティッカーに付ける

あいまいなティッカーシンボルを使うと、STOCKHISTORY関数がどの取引所のデータを取ればいいか迷い、エラーになることがあります。

"MSFT"

の代わりに

"XNAS:MSFT"

のように4文字の取引所識別コード(MIC)を先頭につけることで、データの取得精度が上がり、不要なエラーを減らせます。

対処法6手動スナップショットを定期的に保存する

特に決算や年次レポートなど、特定日の株価が業務上必要になる場合、STOCKHISTORY関数で取得した値をそのまま使い続けるのはリスクがあります。取得した時点で値のコピーを「値のみ貼り付け」で別シートに保存し、取得日時と出所を記録しておくことで、障害時にも過去のデータを失わずに済みます。

対処法7外部APIやアドインの活用を検討する

STOCKHISTORY関数の信頼性に限界を感じたら、サードパーティの選択肢も視野に入れてみてください。Power Queryを使えばYahoo FinanceなどのWebソースから株価データを直接取り込めますし、Alpha VantageやFinancial Modeling PrepなどのAPIを使えば、PythonやExcel VBAから独自にデータを取得する仕組みも構築できます。Excelアドインとしては、WisesheetsやMarketXLSなどが株価データ専用のツールとして利用されています。もちろん、これらはSTOCKHISTORY関数ほど手軽ではありませんが、業務に不可欠なデータを単一のクラウドサービスだけに依存させないという意味で、検討する価値は十分にあります。

そもそもSTOCKHISTORY関数は業務で頼っていいのか?

ここまで読んで、こう感じた方もいるかもしれません。「こんなに不安定なら、最初から使わないほうがいいのでは?」と。正直に言うと、半分は正しいです。

STOCKHISTORY関数は、個人投資家が自分のポートフォリオを分析したり、学生がファイナンスの勉強で株価チャートを作ったりするには、非常に便利で使いやすいツールです。数式を一つ書くだけで過去何年分もの株価データがスピルで展開されるのは、他のどんな方法よりも手軽でしょう。

しかし、ミッションクリティカルな業務の唯一のデータソースとして使うには、構造的なリスクがあります。Microsoft、LSEG、インターネット接続という3つの外部依存があり、そのどれか一つでも止まればデータが取れなくなるからです。しかもMicrosoftのサービス正常性ダッシュボードには障害が公開インシデントとして掲載されないこともあり、「公式には問題なし」とされているのにデータが取れないという不透明な状況が起こり得ます。

実務での正しいスタンスは、「STOCKHISTORYは便利な入り口として使うが、重要なデータは必ず別の手段でもバックアップを取り、取得値は検証してから使う」というものです。これは何もExcelに限った話ではなく、外部データに依存するあらゆるシステムに共通する原則です。

2026年登場のClaude in Excelは助けになる?

ちょうど2026年1月には、AnthropicのAIアシスタントClaude(クロード)をExcel内で使えるアドイン「Claude in Excel」がClaude Proプランでベータ公開されるという話題もありました。このアドインはExcelの右側サイドバーからClaudeに指示を出して、数式の説明や修正、データの整理などができる機能です。

ただし、Claude in Excelはあくまでシート上のデータに対する分析・操作の支援ツールであり、STOCKHISTORY関数のサーバー障害を直接解決するものではありません。一方で、たとえば「このワークブック内でどの関数が外部データに依存しているかを一覧にして」と指示すれば、障害の影響範囲を素早く特定する助けにはなるでしょう。また、IFERROR防御式の追加やバックアップシートの作成指示なども、プロンプトひとつで効率化できます。新しいツールを上手に組み合わせることで、障害への備えがより手厚くなるわけです。

ExcelとGoogleスプレッドシートの株価機能を比較してみた

STOCKHISTORY関数が使えないとき、多くのユーザーが乗り換え先として真っ先に検討するのがGoogleスプレッドシートのGOOGLEFINANCE関数です。ここで両者の違いを整理しておきましょう。

比較項目 ExcelのSTOCKHISTORY GoogleスプレッドシートのGOOGLEFINANCE
必要な契約 Microsoft 365サブスクリプション(有料) 無料のGoogleアカウントのみ
データ提供元 LSEGデータ&アナリティクス Google Finance
取得できるデータ 日次・週次・月次の終値、始値、高値、安値、出来高 日次・週次の価格、出来高、時価総額、PERなど
為替レート 対応(通貨ペア指定) 対応(通貨ペア指定)
リアルタイム性 市場終了後に更新(遅延あり) 約15〜20分の遅延あり
iPad対応 非対応(STOCKHISTORY関数が使えない) 対応(ブラウザで利用可能)
2026年の安定性 1月と2月に大規模障害発生 同時期に大きな障害報告なし

GOOGLEFINANCE関数は無料で手軽に使える一方、取得できるデータの種類はSTOCKHISTORYほど細かくカスタマイズできません。また、月次間隔のデータ取得やヘッダー表示のオプションなど、STOCKHISTORYにしかない機能もあります。両方のツールを用途に応じて使い分けるのが、2026年現在の最も賢いアプローチと言えるでしょう。

情シス歴10年超のプロが教える「障害切り分け」の実践手順

Excelのイメージ

Excelのイメージ

ここからは、企業の情報システム部門で10年以上インフラやOffice環境の運用に携わってきた視点で、他のサイトには書かれていない「現場で本当に使えるノウハウ」をお伝えします。STOCKHISTORY関数の障害が起きたとき、一般的なサイトでは「再起動してみましょう」「サインアウトしてみましょう」で終わりがちですが、実際のヘルプデスク対応では、もっと体系的な切り分け手順を踏んでいます。

まず覚えてほしいのは、「障害の95%は3つの層のどこかで詰まっている」という経験則です。第一層がローカル環境(自分のPC・アプリ・認証情報)、第二層がMicrosoftの中継サーバー、第三層がLSEGなどの外部データフィード。この3つのうち、どこが原因かを特定するのが最優先です。そして情シスの現場で何百件もExcel絡みの問い合わせを処理してきた経験から断言しますが、2026年のSTOCKHISTORY障害の場合、利用者側で何をやっても解決しないケースが大半でした。

切り分けステップ1別の端末・別のネットワークで再現を確認する

情シスとして最初にやるのは「再現性の確認」です。自分のPCだけの問題なのか、別のPCでも同じか。会社のネットワーク固有の問題なのか、スマホのテザリングに切り替えても同じか。ここがクリアになるだけで、対応の方向性が180度変わります。2026年1月のケースでは、自宅のWi-Fi、会社のLAN、スマホのLTE、さらにはVPN経由と非VPN、どの環境でも同じ#CONNECT!エラーが出たという報告がほとんどでした。この時点で「自分のネットワークの問題ではない」と確信を持てます。

切り分けステップ2Excelの「データ型」全般をテストする

ここが地味に重要なポイントです。STOCKHISTORY関数だけでなく、Excelの「データ」タブにある「株価」データ型や「地理」データ型も試してください。2026年1月の障害では、株価だけでなく通貨レートや地理データなどデータ型全般が同時に止まっていたことが報告されています。もし株価だけが取れなくて地理データは取れるなら、特定のデータフィードだけの問題。全部ダメなら、Microsoftのデータ型サービス基盤そのものの問題。この違いを把握するだけで、Microsoftサポートに報告する際の情報精度が格段に上がります。

切り分けステップ3Microsoft 365管理センターを確認する(管理者向け)

企業のIT管理者であれば、Microsoft 365管理センターの「サービス正常性」ダッシュボードを確認してください。ただし、ここに大きな落とし穴があります。2026年1月のSTOCKHISTORY障害のとき、サービス正常性には「すべて正常」と表示されていたのです。Microsoftサポートに問い合わせたユーザーも「サービスヘルスにインシデントが載っていないのに、サーバー側の問題だと認めた」という矛盾した対応を受けています。つまり、ダッシュボードが「緑」でも安心できません。フォーラムやRedditの報告と突き合わせて判断する必要があるということです。これは、長年情シスをやっていて何度も経験した「公式と現実のギャップ」の典型例です。

VBAで作るSTOCKHISTORY障害時の「自動防御」マクロ集

ここからは、STOCKHISTORY関数が止まったときにワークブックを自動的に守るVBAマクロを紹介します。すべてのコードはMicrosoft 365版Excel(Windows版、バージョン2401以降、ビルド16.0.17231以降)で動作確認を行っています。Excel 2021やExcel 2019の買い切り版ではSTOCKHISTORY関数自体が存在しないため、関数を参照するマクロは動作しません。macOS版Excel for Microsoft 365でも基本的に動作しますが、

MSXML2.XMLHTTP

を使用するコードはWindows専用となるため、macOSではPower QueryやPythonベースの代替手段を検討してください。

マクロ1STOCKHISTORYのエラーを自動検知してログに記録する

一番ありがちな問題は、朝Excelを開いたときにSTOCKHISTORYのセルが#CONNECT!になっていて、それに気づかないままレポートを出してしまうケースです。以下のマクロは、ワークブックを開いたときに自動的にSTOCKHISTORY関数の入ったセルをスキャンし、エラーがあればログシートに記録するものです。


'===================================================
' マクロ名: CheckStockHistoryErrors
' 動作確認: Microsoft 365 Excel (Windows)
' Version 2401 Build 16.0.17231以降
' 用途: STOCKHISTORY関数のエラーを自動検知しログ記録
'===================================================
Sub CheckStockHistoryErrors()
    Dim ws As Worksheet
    Dim cell As Range
    Dim logSheet As Worksheet
    Dim logRow As Long
    Dim errorCount As Long

    'ログシートの準備
    On Error Resume Next
    Set logSheet = ThisWorkbook.Sheets("ErrorLog")
    On Error GoTo 0

    If logSheet Is Nothing Then
        Set logSheet = ThisWorkbook.Sheets.Add(After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count))
        logSheet.Name = "ErrorLog"
        logSheet.Range("A1").Value = "検知日時"
        logSheet.Range("B1").Value = "シート名"
        logSheet.Range("C1").Value = "セル番地"
        logSheet.Range("D1").Value = "数式"
        logSheet.Range("E1").Value = "エラー種別"
    End If

    logRow = logSheet.Cells(logSheet.Rows.Count, "A").End(xlUp).Row + 1
    errorCount = 0

    For Each ws In ThisWorkbook.Worksheets
        If ws.Name <> "ErrorLog" Then
            For Each cell In ws.UsedRange
                If cell.HasFormula Then
                    If InStr(UCase(cell.Formula), "STOCKHISTORY") > 0 Then
                        If IsError(cell.Value) Then
                            logSheet.Cells(logRow, 1).Value = Now
                            logSheet.Cells(logRow, 2).Value = ws.Name
                            logSheet.Cells(logRow, 3).Value = cell.Address
                            logSheet.Cells(logRow, 4).Value = "'" & cell.Formula
                            logSheet.Cells(logRow, 5).Value = CStr(cell.Value)
                            logRow = logRow + 1
                            errorCount = errorCount + 1
                        End If
                    End If
                End If
            Next cell
        End If
    Next ws

    If errorCount > 0 Then
        MsgBox errorCount & "件のSTOCKHISTORYエラーを検知しました。" & vbCrLf & "ErrorLogシートを確認してください。", vbExclamation
    End If
End Sub

このマクロを

Workbook_Open

イベントに登録しておけば、ブックを開いた瞬間にエラーの有無がわかります。ThisWorkbookモジュールに

Private Sub Workbook_Open()

を追加し、その中から

Call CheckStockHistoryErrors

を呼び出してください。ErrorLogシートが存在しない場合は自動的に作成されるので、初回実行時も手間がかかりません。

マクロ2Alpha Vantage APIから株価を取得するバックアップ関数

STOCKHISTORY関数が止まったとき、最も実用的なバックアップ手段の一つがAlpha Vantage APIを使ったVBA関数です。Alpha Vantageは無料のAPIキーで1分あたり5リクエスト、1日500リクエストまで利用でき、登録もメールアドレスだけで完了します。以下の関数はWindows版Microsoft 365 Excel(Version 2401以降)およびExcel 2021/2019でも動作します。ただし、

MSXML2.XMLHTTP

を使うためmacOSでは動作しません。


'===================================================
' 関数名: GetStockPriceAV
' 動作確認: Microsoft 365 Excel / Excel 2021 / Excel 2019 (すべてWindows版)
' 前提条件: Alpha Vantage無料APIキーの取得が必要
' 用途: STOCKHISTORY障害時のバックアップ株価取得
'===================================================
Function GetStockPriceAV(ByVal symbol As String) As Variant
    Dim apiKey As String
    Dim url As String
    Dim http As Object
    Dim responseText As String
    Dim priceStart As Long
    Dim priceEnd As Long

    'ここに自分のAPIキーを入れる
    apiKey = "YOUR_API_KEY_HERE"

    url = "https://www.alphavantage.co/query?function=GLOBAL_QUOTE&symbol=" & symbol & "&apikey=" & apiKey

    On Error GoTo ErrHandler
    Set http = CreateObject("MSXML2.XMLHTTP")
    http.Open "GET", url, False
    http.send

    responseText = http.responseText

    'JSONから直近価格を簡易抽出
    priceStart = InStr(responseText, """05. price"": """) + Len("""05. price"": """)
    If priceStart > Len("""05. price"": """) Then
        priceEnd = InStr(priceStart, responseText, """")
        GetStockPriceAV = CDbl(Mid(responseText, priceStart, priceEnd - priceStart))
    Else
        GetStockPriceAV = "取得失敗"
    End If

    Set http = Nothing
    Exit Function

ErrHandler:
    GetStockPriceAV = "接続エラー"
    Set http = Nothing
End Function

セルに

=GetStockPriceAV("MSFT")

と入力すれば、STOCKHISTORYとは完全に独立したルートでMicrosoftの最新株価が取得されます。ポイントは、このVBA関数はMicrosoftのデータ中継サーバーもLSEGも一切経由しないこと。だからSTOCKHISTORY関数が全滅していても、こちらは生きているわけです。ただし、無料プランの場合は1分5回のレート制限があるので、大量のティッカーを一括取得するときはループ内に

Application.Wait

で13秒以上の待機を入れてください。

マクロ3STOCKHISTORYの取得値を自動バックアップする仕組み

情シスの現場で一番悲惨なのは、「昨日まで取れていた株価データが障害で消えた」というケースです。STOCKHISTORYはダイナミック配列なので、エラーになるとスピルしていた値がすべて消えます。以下のマクロは、STOCKHISTORYが正常に値を返しているタイミングで自動的にスナップショットを別シートに保存するものです。


'===================================================
' マクロ名: BackupStockData
' 動作確認: Microsoft 365 Excel (Windows/macOS)
' Version 2401 Build 16.0.17231以降
' 用途: STOCKHISTORY取得値の自動バックアップ
'===================================================
Sub BackupStockData()
    Dim srcSheet As Worksheet
    Dim bkSheet As Worksheet
    Dim srcRange As Range
    Dim bkRow As Long
    Dim hasError As Boolean

    '取得元のシート名とSTOCKHISTORYが入っているセルを指定
    Set srcSheet = ThisWorkbook.Sheets("StockData")
    Set srcRange = srcSheet.Range("A1").CurrentRegion

    'エラーチェック
    hasError = False
    Dim c As Range
    For Each c In srcRange
        If IsError(c.Value) Then
            hasError = True
            Exit For
        End If
    Next c

    'エラーがなければバックアップ実行
    If Not hasError And srcRange.Cells.Count > 1 Then
        On Error Resume Next
        Set bkSheet = ThisWorkbook.Sheets("StockBackup")
        On Error GoTo 0

        If bkSheet Is Nothing Then
            Set bkSheet = ThisWorkbook.Sheets.Add(After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count))
            bkSheet.Name = "StockBackup"
        End If

        '既存データをクリアして最新値で上書き
        bkSheet.Cells.Clear
        bkSheet.Range("A1").Value = "バックアップ日時: " & Format(Now, "yyyy/mm/dd hh:nn:ss")
        srcRange.Copy
        bkSheet.Range("A2").PasteSpecial xlPasteValues
        Application.CutCopyMode = False
    End If
End Sub

このマクロもWorkbook_Openや、Workbook_BeforeCloseイベントに仕込んでおくのが効果的です。ブックを閉じる前に正常なデータがあればバックアップ、開いたときにエラーがあればバックアップシートのデータを参照する、というフローが組めます。地味ですが、障害で数日分のデータが飛ぶリスクをほぼゼロにできるので、情シス目線では最優先で導入すべき対策です。

現場でよく遭遇する「あるある」トラブルと解決方法

ここからは、Excelのサポートや社内ヘルプデスクで実際に対応した経験をベースに、STOCKHISTORY関数まわりで「よく聞かれるけど、ネットで調べても答えが出にくい」問題とその解決方法を共有します。

#BUSY!が永遠に消えない問題

STOCKHISTORY関数を入力すると、まず#BUSY!という表示が出て、数秒後にデータに置き換わるのが正常な挙動です。しかし、実際の現場では#BUSY!が何分待っても消えないというケースに頻繁に遭遇します。この問題の厄介なところは、#BUSY!はExcelの標準エラーではないため、IFERROR関数やVBAのIsError関数では捕捉できないことです。

解決方法はいくつかの段階に分かれます。まず、Excelの「数式」タブから「計算方法の設定」を確認し、「自動」になっているか見てください。「手動」になっていると、再計算がトリガーされずに#BUSY!で止まることがあります。それでもダメな場合は、Excelのオプションで「反復計算を有効にする」をオンにすると解消するケースが報告されています。最終手段として、セルの数式をいったん削除し、Excelを完全に閉じてから再起動し、数式を再入力するという手順を踏みます。

VBAマクロからSTOCKHISTORY関数をセルに書き込む場合は、さらに注意が必要です。VBAの実行中はExcelの再計算がブロックされるため、VBAからFormula2プロパティで数式を入力しても、VBAが終了するまで#BUSY!が解消されません。これを回避するには、数式を書き込んだ後にDoEventsを挟むか、Application.OnTimeを使って再計算を別タイミングに遅延させる必要があります。

STOCKHISTORY関数が特定のティッカーだけ取れない問題

「MSFTは取れるのにAAPLが取れない」「米国株は大丈夫なのに日本株がダメ」――こういうパターンは意外と多いです。原因の大半は、ティッカーシンボルのあいまいさです。同じティッカーが複数の取引所で使われている場合、Excelが意図しない取引所のデータを探しに行ってエラーになることがあります。

対処法は単純で、ティッカーの前に取引所の識別コード(MICコード)をコロン区切りで付与します。たとえば東証のトヨタ自動車なら

=STOCKHISTORY("XTKS:7203","2025-01-01")

のように書きます。主要な取引所のMICコードは覚えておくと便利です。NASDAQならXNAS、ニューヨーク証券取引所ならXNYS、東京証券取引所ならXTKS、ロンドン証券取引所ならXLONです。

もう一つよくあるのは、S&P 500などの主要インデックスがSTOCKHISTORYで取れない問題。これは不具合ではなく仕様です。Microsoft公式ドキュメントにも「一部のインデックスファンドではStocksデータ型として認識されても、履歴情報は利用できない」と記載されています。SPYやVOOなど、インデックスに連動するETFのティッカーを代用するのが現実的な解決策です。

共有ブックやSharePoint上のブックでSTOCKHISTORYが動かない問題

企業環境でよく起きるのがこのパターンです。ローカルにダウンロードしたExcelファイルではSTOCKHISTORYが動くのに、SharePoint OnlineやOneDrive for Business上で直接開くとエラーになる。原因として多いのは、組織のセキュリティポリシーで外部データ接続がブロックされているケースです。

Microsoft 365の管理者であれば、SharePoint管理センターやMicrosoft Entra(旧Azure AD)の条件付きアクセスポリシーを確認してください。特に「外部コンテンツの接続制限」や「データ型の更新を許可するポリシー」が関係します。また、テナントのデータ損失防止(DLP)ポリシーが過度に厳しく設定されていると、STOCKHISTORYの外部データ取得がブロックされることもあります。このあたりは一般ユーザーの手に負える範囲ではないので、IT部門に「Excelのデータ型更新の外部接続がポリシーでブロックされていないか確認してほしい」と依頼するのが最短ルートです。

日付のロケール問題で#VALUE!が出る罠

日本語環境のExcelでSTOCKHISTORY関数を使うときに意外とハマるのが日付の書式問題です。英語圏のチュートリアルでは

=STOCKHISTORY("MSFT","1/1/2025")

のようにMM/DD/YYYYで書かれていますが、日本語環境ではYYYY/MM/DDが標準なので、そのままコピペすると日付として認識されずに#VALUE!エラーになることがあります。

最も安全な書き方は、

DATE関数

を使って日付を明示的に構成する方法です。

=STOCKHISTORY("MSFT",DATE(2025,1,1),DATE(2025,12,31))

のように書けば、どのロケールでも正しく動作します。これはExcelの日付まわりでは基本中の基本なのですが、STOCKHISTORY関数の文脈で説明しているサイトは意外と少ないので、あえて強調しておきます。

Power Queryを使ったSTOCKHISTORYの「完全代替」手順

VBAが苦手な方や、macOSを使っている方にとって、STOCKHISTORY関数の最も現実的な代替手段がPower Queryです。Excel 2016以降のすべてのバージョンに搭載されており(macOS版はExcel for Microsoft 365のみ対応)、Web上のAPIからデータを取得してExcelのテーブルに自動で読み込む仕組みが作れます。

Yahoo Finance非公式APIからPower Queryで株価履歴を取得する

Yahoo Financeの正規APIは2017年に廃止されましたが、2026年現在でもquery1.finance.yahoo.comのエンドポイントは非公式ながら稼働しています。Power Queryでこのエンドポイントに接続し、CSVデータを取得する手順は次のとおりです。

  1. Excelの「データ」タブを開き、「データの取得」→「Webから」を選択します。
  2. URLの入力欄に、取得したい銘柄のダウンロードURLを入力します。たとえばMicrosoftの過去1年分の日次データなら、Yahoo Financeの株価ページからCSVダウンロードリンクのURLを調べて指定します。URLの構造は
    https://query1.finance.yahoo.com/v7/finance/download/MSFT?period1=開始UNIXタイム&period2=終了UNIXタイム&interval=1d

    の形式です。

  3. Power Queryエディタが開いたら、必要に応じて列のデータ型を「日付」「通貨」に変換し、不要な列を削除して「閉じて読み込む」を押します。

注意点として、Yahoo Financeの非公式APIは予告なく仕様変更やアクセス制限がかかることがあります。業務で継続的に使う場合は、Alpha Vantageのような明示的にAPIを公開しているサービスの方が安定性は高いです。また、Power Queryで取得したデータは「更新」ボタンを押すか、ワークブックの設定で定期更新を有効にしないと自動では更新されません。この点はSTOCKHISTORYのようにセルを開いた瞬間に最新データが入るわけではないため、運用フローに「データ更新」のステップを明示的に組み込む必要があります。

情シスが社内で実際に配布している「障害対応チェックシート」の考え方

ここまで技術的な対策をたくさん紹介してきましたが、実は情シスの現場で一番効果があるのは、「障害が起きたときに何をどの順番でやるかを紙一枚にまとめておく」ことです。実際に私が社内で配布しているSTOCKHISTORY障害対応チェックシートの骨子を共有します。

確認順序 確認項目 判断基準 次のアクション
1 Web版Excelで同じブックを開く Web版でもエラーなら「自分のPC問題ではない」と確定 ステップ2へ進む
2 他のデータ型(地理・通貨)を試す 全部ダメなら「データ型基盤の障害」と判断 サーバー復旧待ち。バックアップデータを使う
3 Microsoft Q&AフォーラムやRedditを確認 同時間帯に複数の報告があれば広域障害 情シスからMicrosoft管理センターへ報告
4 StockBackupシートのデータ鮮度を確認 バックアップが24時間以内なら暫定利用可 バックアップデータで業務を継続
5 Alpha Vantage VBA関数で代替取得を試行 API応答があれば代替データとして利用 代替データに切り替えて業務続行

このチェックシートのミソは、各ステップの「判断基準」と「次のアクション」を明確にしていることです。障害が起きたときに人間が一番パニックになるのは、「何をすればいいかわからない」状態。それを防ぐために、yes/noの分岐を事前に決めておく。これだけで障害対応の時間が体感で半分以下になります。

ぶっちゃけこうした方がいい!

ここまで障害の原因分析からVBAマクロ、Power Query、チェックシートまで色々と書いてきましたが、正直な話をしますね。

情シスを10年以上やってきて、STOCKHISTORY関数まわりのトラブル対応を何度もやった結論として、「STOCKHISTORYは下書き用、本番データは別ルートで取る」という運用ルールを最初から作っておくのが一番楽です。ぶっちゃけ、これに尽きます。

STOCKHISTORYは本当に便利な関数です。数式を一つ書くだけで過去何年分もの株価がズラッと出てくるのは、他のどんな方法よりも手軽だし、Excelの中で完結するからワークフローが途切れない。だから「最初のとっかかり」としては最高なんです。でも、年に2回以上落ちる実績があって、落ちたときにMicrosoftからまともな告知も出ない、管理センターは「オールグリーン」のままで嘘をつく。この信頼性レベルのツールに、業務の基幹データを一本で乗せるのは、ぶっちゃけ無理がある。

だから、個人的に一番おすすめなのは、STOCKHISTORYで普段のデータ取得をやりつつ、取得した値は毎回値貼り付けでバックアップシートにコピーし、月に一度はAlpha Vantage経由のデータと突き合わせて検算するという「三重チェック」体制です。手間に聞こえるかもしれませんが、先ほど紹介したBackupStockDataマクロを仕込んでおけばバックアップはブックを閉じるたびに自動で走るし、Alpha Vantageの検算もGetStockPriceAV関数を隣のセルに入れておくだけ。実質の追加作業はほぼゼロです。

そしてもう一つ、これは情シスとしての本音ですが、Microsoftのサービス正常性ダッシュボードを盲信しないでください。2026年1月の件では「サービスは正常」と表示されたまま4日間STOCKHISTORYが死んでいました。ダッシュボードが「緑」だからといって問題なしと判断するのではなく、実際のセルの値とフォーラムの情報を突き合わせて自分の目で判断する。これが、長年運用に携わってきた者としての、偽りのないアドバイスです。

Excelは圧倒的に優秀なツールです。でも「外部データに依存する関数は、いつでも止まる可能性がある」という前提を持った上で使うのと、止まることを想定していないのでは、同じExcelを使っていても安心感がまるで違います。今日この記事を読んだのをきっかけに、バックアップマクロをひとつ仕込むだけでもいい。それだけで、次にSTOCKHISTORYが沈黙したとき、あなたは慌てずに済みます。

ExcelのSTOCKHISTORY関数の不具合に関するよくある質問

STOCKHISTORY関数のエラーはいつ直る?自分で直せないの?

サーバー側の障害の場合、ユーザー側でできることはほとんどありません。2026年1月のケースでは、発生から約4日後に多くのユーザーで復旧が確認されました。ただし、復旧タイミングには地域差やアカウント差があり、全員が同時に直るわけではありません。Microsoftのサービス正常性ダッシュボードに公開インシデントが掲載されないことも多いため、Microsoft Q&AフォーラムやRedditで他のユーザーの状況を確認するのが最も早い情報収集手段です。再インストールやキャッシュ削除では解決しないので、そこに時間を費やさないようにしましょう。

STOCKHISTORY関数はExcel 2021やExcel 2019でも使える?

使えません。STOCKHISTORY関数はMicrosoft 365サブスクリプション版Excel限定の機能です。買い切り版のExcel 2024、2021、2019には搭載されていません。この点を知らずにサブスクリプションを契約していない状態で使おうとして「関数が見つからない」と困っている方も少なくないようです。また、macOS版ではExcelを最新ビルドに更新していないとSTOCKHISTORYが動かないことがあるので、「ヘルプ」→「更新プログラムの確認」で必ず最新状態にしてください。

STOCKHISTORY関数の代わりに使える無料のツールはある?

最も手軽な代替手段は、Googleスプレッドシートの

=GOOGLEFINANCE()

関数です。無料で使え、ExcelのSTOCKHISTORYと似たような形式で株価履歴を取得できます。Googleスプレッドシートで取得したデータをCSV形式でダウンロードしてExcelに読み込むという運用も現実的です。より本格的なデータ取得が必要な場合は、Alpha Vantage(無料枠あり)やYahoo FinanceのデータをPower Queryで取り込む方法も検討してみてください。

障害が起きたときにMicrosoftに報告する意味はある?

あります。Excelの「ヘルプ」→「フィードバック」→「問題を報告」から障害内容を送信すると、製品チームがログを確認して対応優先度を判断する材料になります。特に、企業のMicrosoft 365管理者は「Microsoft 365管理センター」から問題を報告することで、対応の優先度をさらに上げることができます。複数のテナントから報告が集まるほど、Microsoftが公式インシデントとして扱いやすくなるためです。

STOCKHISTORY関数で取得したデータは正確?取引判断に使っていいの?

Microsoft公式はSTOCKHISTORYで取得したデータについて「遅延があり、そのままの状態で提供されるもので、取引やアドバイスを目的としたものではない」と明記しています。あくまで分析や参考情報としての利用を想定しており、リアルタイムのトレーディング判断には使わないでください。正式な投資判断やコンプライアンス報告には、SLA(サービス品質保証)付きの有料データフィードを利用することが推奨されます。

今すぐパソコンやスマホの悩みを解決したい!どうしたらいい?

LINE公式

いま、あなたを悩ませているITの問題を解決します!
「エラーメッセージ、フリーズ、接続不良…もうイライラしない!」

あなたはこんな経験はありませんか?

✅ ExcelやWordの使い方がわからない💦
✅ 仕事の締め切り直前にパソコンがフリーズ💦
✅ 家族との大切な写真が突然見られなくなった💦
✅ オンライン会議に参加できずに焦った💦
✅ スマホの重くて重要な連絡ができなかった💦

平均的な人は、こうしたパソコンやスマホ関連の問題で年間73時間(約9日分の働く時間!)を無駄にしています。あなたの大切な時間が今この悩んでいる瞬間も失われています。

LINEでメッセージを送れば即時解決!

すでに多くの方が私の公式LINEからお悩みを解決しています。

最新のAIを使った自動応答機能を活用していますので、24時間いつでも即返信いたします。

誰でも無料で使えますので、安心して使えます。

問題は先のばしにするほど深刻化します。

小さなエラーがデータ消失重大なシステム障害につながることも。解決できずに大切な機会を逃すリスクは、あなたが思う以上に高いのです。

あなたが今困っていて、すぐにでも解決したいのであれば下のボタンをクリックして、LINEからあなたのお困りごとを送って下さい。

相談しに行く

ぜひ、あなたの悩みを私に解決させてください。

まとめ

2026年のSTOCKHISTORY関数の不具合は、1月の年明け障害と2月中旬の再発という2度の大きなトラブルを通じて、この関数が抱える構造的な脆弱性を浮き彫りにしました。Excelアプリ、Microsoftの中継サーバー、そしてLSEGのデータフィードという3層の外部依存があり、そのどこかが止まればセルはエラーで埋まります。

だからこそ大切なのは、「壊れることを前提にした使い方」を今のうちに身につけておくことです。IFERROR防御式の設定、Googleスプレッドシートの併用、手動スナップショットの保存、取引所コードの明示的な指定、そして本当に重要なデータには外部APIやアドインを使うこと。これらの対策を組み合わせることで、次にSTOCKHISTORY関数が沈黙しても、あなたのワークブックは動き続けます。

Excelの株価機能は、使いこなせば非常にパワフルな武器です。しかし「便利さ」と「信頼性」は別物であることを、2026年の障害は私たちに改めて教えてくれました。備えあれば憂いなし。この記事で紹介した対策を、ぜひ今日から一つずつ実践してみてください。

この記事を書いた人
この記事を書いた人

企業の情報システム部門で10年以上、PC・アカウント・社内ネットワーク・Microsoft 365/Google Workspace運用を担当。年間数百件の問い合わせ対応(PC不調、メール送受信、Excel/Word資料、Teams会議、スマホ連携など)を通じて、初心者がつまずくポイントを「再現→原因切り分け→最短解決」の手順に落とし込んできました

現場や身近で実際に起きたトラブルをベースに、手順だけでなく「なぜそうなるか」「失敗しやすい落とし穴」「安全な設定(セキュリティ)」まで含めて解説します。

相談窓口(問い合わせ/LINE等)を設け、記事で解決しないケースも個別にサポートしていますので「パソコンが急に動かなくなった」「スマホの設定がわからない」などの悩みは一人で抱え込まず、お気軽にご相談ください。

【お問い合わせは下記URLから】
https://m32006400n.xsrv.jp/inquiry-form/

【公式LINEは下記URLから】
https://lin.ee/t8TDjcj

uri uriをフォローする
スポンサーリンク
よかったらシェアしてね! /
uri uriをフォローする

コメント

タイトルとURLをコピーしました