【解決済み】Excelの循環参照エラーの直し方|原因4パターン・見つけ方・反復計算の設定
Tutorials

【解決済み】Excelの循環参照エラーの直し方|原因4パターン・見つけ方・反復計算の設定

Excelで急に「循環参照」と表示されて、計算結果が正しいのか不安になっていませんか。落ち着いて順番に確認すれば、ほとんどの場合は数式を1か所直すだけで解決します。

結論から言うと、循環参照エラーとは「数式が直接または間接的に自分自身のセルを参照してしまい、計算が終わらない状態」です(Microsoft サポート)。直し方は次の3ステップです。

  1. 原因セルを見つける: 画面左下のステータスバー、または「数式」タブ→「エラーチェック」右の▼→「循環参照」で確認する
  2. 数式を直す: SUM関数の範囲やIF関数の条件から、数式が入っているセル自身を外す
  3. 見つからないなら反復計算を疑う: 「反復計算」がONだとエラーが表示されないため、OFFにしてから再チェックする

なお、反復計算をONにしてエラー表示を消すのは根本的な解決ではありません。理由は後半で実例とあわせて説明します。

循環参照エラーとは?表示された意味をまず理解する

循環参照が起きると、Excel画面左下のステータスバーに「循環参照: B3」のようにセル番地が表示されます。ブックを開くたびに「循環参照が見つかった」という趣旨の警告が出ることもあります。

いちばん小さな例は、セルA1に「=A1+1」と入力するケースです。A1を計算するためにA1の値が必要になるので、計算がいつまでも終わりません。数式が自分自身へ戻ってくる、これが循環参照の正体です。

循環参照が起こる4つの原因パターン

循環参照の形は、大きく自己参照・相互参照・間接的な循環参照の3つに分けられます(@IT、できるネット)。加えて、コピー&ペーストで相対参照がずれて自分自身を含んでしまうケースも実務ではよく起こります。まずは一覧で全体像をつかみましょう。

パターン 数式の例 起きやすい場面
自己参照 B3に「=SUM(B1:B3)」 合計欄の範囲指定
相互参照 A1に「=A2+1」、A2に「=A1」 2つのセルで値を受け渡す表
間接的な循環参照 A1→B1→C1→A1と一巡 複数セル・複数シートにまたがる集計
コピーによるズレ 相対参照がずれて自分を含む 数式を貼り付けた直後

自己参照(SUM関数の範囲に合計セル自身を含める)

実務で最も多いのがこのパターンです。B1〜B2を合計したいのに、B3の数式を「=SUM(B1:B3)」としてしまうと、合計セル自身が範囲に入ります。IF関数の条件式に、その数式が入っているセル自身を指定してしまうのも同じ仲間です。

相互参照(2つのセルが互いを参照する)

A1が「=A2+1」、A2が「=A1」のように、2つ以上のセルがお互いを参照してループする形です。1つずつ見ると普通の数式に見えるため、気づきにくいのが特徴です。

間接的な循環参照(複数セル・シートを経由する)

A1がB1を、B1がC1を、C1がA1を参照するように、いくつかのセルを経由して一巡するケースです。途中で別シートを経由すると、画面上では関係が見えにくくなります。

コピー&ペーストによる相対参照のズレ

数式をコピーすると、相対参照(貼り付け先に合わせて自動でずれる参照)の範囲も一緒に移動します。その結果、貼り付け先のセル自身が範囲に含まれてしまうことがあります(relief.jp)。

循環参照が起こる3つのパターン(自己参照・相互参照・間接的な循環参照)の比較図

循環参照エラーが出ているセルの見つけ方

ステータスバーで確認する(最速)

まずは画面左下のステータスバーを見てください。「循環参照: (セル番地)」と表示されていれば、そのセルが手がかりです。

「数式」タブの「エラーチェック」で一覧表示する

「数式」タブ→「エラーチェック」右の小さな▼→「循環参照」を選ぶと、関係するセル番地が一覧で表示されます。番地をクリックすると、そのセルへジャンプできます。バージョンによってリボンの配置は多少異なりますが、メニュー名は共通です。

実際にMicrosoft Q&A(2016年投稿)では、ブックを開くたびに警告が出ていた質問者本人が、この一覧のセルを1つずつ確認して参照範囲の誤りを見つけ、エラーを解消しています。

C226のセルを確認してみたら、間違いが見つかりました。(中略)修正したところエラーは表示されなくなりました。

出典: Microsoft Q&A(質問者本人の投稿、2016年9月)

複数シート・複数ブックにまたがる場合

他のブックを参照している場合は、関係するブックをすべて開いた状態で確認します。開いていないブックは調べられないためです。

「参照元のトレース」「参照先のトレース」で関係を追う

原因セルが分かったら、「数式」タブにある「参照元のトレース」「参照先のトレース」を使いましょう。セル同士の参照関係が矢印で表示され、どこでループしているかを目で追えます。特に、間接的な循環参照のように複数セル・複数シートを経由していて数式を目で追いにくい場合に使うと効果的です。

循環参照エラーの直し方

範囲から自分自身のセルを外す

基本は、数式から自分自身への参照を取り除くことです。先ほどの例なら、B3の数式を「=SUM(B1:B2)」に直せば解決します。どうしても同じ計算が必要なら、数式を別のセルへ移しましょう。

数式が複雑で分からない場合

長い数式は、参照しているセルや範囲を1つずつ分解して確認するのが近道です。範囲を1行ずつ区切り、どの参照が自分に戻ってくるのかを探します。一覧に複数のセルが出ている場合も、上から順番に1つずつ直していけば大丈夫です。

循環参照エラーが「ないのに」表示される・消えない場合の対処法

反復計算がONになっていないか確認する

「エラーチェックに何も出ないのに計算結果がおかしい」場合、反復計算がONになっている可能性があります。反復計算がONだと、Excelは循環参照を無視して計算を続けるため、エラーチェックに表示されなくなります(excel-trouble.jp)。反復計算をOFFにして再チェックすると、原因セルが表示されるはずです。

切り分けチェックリスト

上から順に確認してください。

順番 確認すること 該当したときの対応
1 エラーチェックに循環参照が表示されるか 表示されたセルの数式を修正する
2 反復計算がONになっていないか OFFにしてから再度エラーチェックする
3 非表示シートがないか シート見出しを右クリック→「再表示」で確認する
4 「名前の管理」(セル範囲にB3のような番地の代わりに好きな名前を付けるExcelの機能)の名前付き範囲が自分を含んでいないか 「数式」タブ→「名前の管理」を開き、対象の名前をクリックして「参照範囲」を確認・修正する
5 条件付き書式やアドインが関係していないか ルールやアドインを一時的に外して確かめる

3〜5は、1つの解説サイトで紹介されている原因で、Microsoft公式ページでの明記は確認できていません。1と2で解決しないときに疑う候補として考えてください。

循環参照エラーの切り分けフローチャート

反復計算で「隠す」対処は長続きしないことも

Microsoft Q&A(英語、2024年投稿)には、反復計算を有効にして警告を消したものの、翌日ファイルを開くとチェックが外れていて警告が再発したという報告があります。原因は特定されておらず報告も1件だけですが、反復計算の設定は環境によっては保持されないことがあるようです。回答者も、設定でごまかすより数式そのものを直すよう勧めています。

意図的に循環参照を使いたい場合|反復計算の設定方法

設定手順と既定値

反復計算は、エラーを隠す機能ではなく、あえて循環参照を許可するための機能です。設定場所は次のとおりです(Microsoft サポート)。

項目 内容
Windows版の場所 「ファイル」→「オプション」→「数式」
Mac版の場所 「Excel」→「環境設定」→「計算方法」
有効にする操作 「反復計算を有効にする」にチェック
最大反復回数(既定) 100回
変化の最大値(既定) 0.001未満

反復計算を有効にする設定手順(Windows版・Mac版)と既定値

ブラウザ版のExcel Onlineは反復計算に対応していません。必要な場合はデスクトップ版のExcelでブックを開きましょう。

使いどころは財務モデルなどに限る

代表例は、税引後利益の一定率をボーナスとして支給する計算です。ボーナス額は税引後利益で決まり、税引後利益はボーナス(経費)で変わるため、構造上どうしても循環します。こうした財務・工学モデル以外では、反復計算はOFFのままにしておくのが安心です(O’Reilly)。

まとめ

循環参照エラーは、原因セルさえ特定できれば落ち着いて直せるトラブルです。今後つまずかないために、次の3点を習慣にしましょう。

  • SUM関数・IF関数を使うときは、範囲や条件式に自分のセルが入っていないか確認する
  • 数式をコピーする前に、相対参照と絶対参照($を付けてコピー先でもずれないようにする参照)のどちらが適切かを意識する
  • 反復計算は「エラーを隠す機能」ではなく「意図的な循環参照を許可する機能」と覚えておく

いま警告が出ているなら、まずはステータスバーと「数式」タブの「エラーチェック」→「循環参照」を開いて、表示されたセルを1つずつ確認してみてください。

コメントを残す

メールアドレスが公開されることはありません。 ※ が付いている欄は必須項目です