問題:ポートフォリオの破損と空のセル複雑なポートフォリオ管理表を開いたときに、#N/Aエラーが並んでいるのを見ることほどストレスのたまることはありません。最近、あるクライアントが重要なリバランシングの段階でこの状況に陥りました。サマリータブ全体が使い物にならなくなってしまったのです。原因は? 恐ろしい #N/A (GOOGLEFINANCE returned no data.) エラーです。財務判断がライブ配信のデータに依存している場合、これは単なる書式の問題ではなく、ワークフロー全体の停止を意味します。
Google スプレッドシートでこのエラーが発生するのは、GOOGLEFINANCE 関数がサーバー上でリクエストに一致するデータを見つけられない場合です。通常、サーバー自体には問題ありません。本当の原因は、ほとんどの場合、数式の構文の小さなミスや、リクエストしているメタデータの不一致です。
正確なエラーメッセージ```
#N/A (GOOGLEFINANCE returned no data.)
## ステップ 1:問題のあるティッカーを特定する最初のステップは、問題が全体的なものか、あるいは一部に限られているかを確認することです。私のクライアントの場合、`NASDAQ:AAPL` や `NYSE:T` は正常に更新されていました。しかし、いくつかの海外銘柄や新規IPO銘柄でエラーが出ていました。Google Finance は、米国以外の市場のデータリクエストに対して非常に厳格であることで知られています。推測はしてくれません。ただエラーを出すだけです。
## ステップ 2:根本原因を特定する### 1. 取引所プレフィックスの欠落これが `#N/A` エラーの最大の原因です。`=GOOGLEFINANCE("VNM")` と入力すると、Google スプレッドシートは混乱します。VNMはNYSEで人気のETFですが、ベトナム拠点の株式の一般的な略称でもあります。プレフィックスがないと、関数は間違った市場をデフォルトとして選択するか、あるいは何も見つけられない可能性があります。
### 2. サポートされていない属性ある数式で、債券ETFに対して `"pe"`(株価収益率)を取得しようとしているのに気づきました。Google Finance は、ほとんどのETFや投資信託に対してP/EレシオやEPSデータを提供していません。その特定の資産クラスに存在しない属性をリクエストすると、セルが空白のままになるのではなく、エラーが返されます。
### 3. 週末や祝日のギャップ過去データの取得は特にデリケートです。市場が閉まっている特定の日の日曜日の価格をリクエストすると、取引が行われなかったため、Google スプレッドシートは `#N/A` を返すことがあります。これは、市場の休日を考慮していない固定の日付参照を使用している場合に特によく発生します。
## ステップ 3:解決策### 解決策 1:明示的なティッカー構文を使用するスプレッドシートに取引所を推測させてはいけません。常に `取引所:ティッカー` 形式を使用してください。正確なコードは、[Google Finance](https://www.google.com/finance) で銘柄を検索することで確認できます。例えば、ロンドンの場合は「LON」、東京の場合は「TYO」を使用します。
// 非推奨:エラーが発生しやすい =GOOGLEFINANCE("FPT")
// 推奨:ホーチミン証券取引所を直接指定する =GOOGLEFINANCE("HOSE:FPT", "price")
// 米国株の場合はこちら: =GOOGLEFINANCE("NASDAQ:TSLA", "price")
### 解決策 2:属性を確認するリクエストしている属性が、そのティッカーに実際に存在することを確認してください。リアルタイムデータでは通常、以下の属性がサポートされています:
- `"price"` - 現在の価格(通常20分遅延)- `"priceopen"` - 当日の始値- `"high"`(高値)、`"low"`(安値)、`"volume"`(出来高)、`"marketcap"`(時価総額)過去のデータを取得する場合は、`"close"`(終値)、`"open"`(始値)、または `"all"` のような履歴専用の属性を使用してください。
### 解決策 3:数式を IFERROR で囲む実運用しているダッシュボードでは、1つの `#N/A` が依存するすべての計算を壊してしまう可能性があります。データが欠落している場合でもシートを機能させ続けるために、`IFERROR` を使用してください。これはシンプルな安全策です。
=IFERROR(GOOGLEFINANCE("HOSE:VNM", "price"), "Data Missing")
フォールバック(代替策)を設定することもできます。P/Eのような複雑な属性が失敗した場合でも、基本の価格を表示させることができます:
=IFERROR(GOOGLEFINANCE(A2, "pe"), GOOGLEFINANCE(A2, "price"))
### 解決策 4:DATE 関数で日付を標準化する「1/1/2024」のようなテキスト形式の日付は、スプレッドシートのロケール設定によって解釈が変わるため危険です。`DATE()` 関数を使用して、Google スプレッドシートがどの日付を求めているのかを正確に理解できるようにしてください。
// 信頼性が高い:年、月、日の形式でロケールの混乱を避ける =GOOGLEFINANCE("NASDAQ:AAPL", "price", DATE(2024,1,1), DATE(2024,1,10))
## 検証:修正の確認- **セルを確認する:** エラーが消え、数値またはデータ配列が表示されるはずです。- **ホバーして情報を確認する:** 結果の上にマウスを置くと、「データは遅延しています」といったツールチップが表示されるはずです。これは良い兆候で、接続がアクティブであることを意味します。- **配列を確認する:** 過去のデータをリクエストした場合は、テーブルが正しく入力されているか確認してください。ヘッダーしか表示されない場合は、選択した期間中、市場が閉まっていた可能性があります。## まとめスプレッドシートの強固さは、最も脆弱な数式に依存します。エラーハンドリングなしで `GOOGLEFINANCE` に頼るのは、トラブルを招くようなものです。ダッシュボードを安定させるために、常に `NYSE:` や `NASDAQ:` のような明示的な取引所プレフィックスを使用してください。すべての属性がすべての銘柄に機能すると決めつけないでください。最も重要なのは、1つの欠落したデータポイントが財務モデル全体を壊さないように `IFERROR` を活用することです。

