Excelファイルを開いた時に、画像のような長いダイアログボックスが出てきたことありませんか?
「1つ以上の循環参照が発生しています。循環参照とは、数式が直接的または間接的に自身のセルを参照している状態を指します。これにより、計算が正しく行われない可能性があります。循環参照を削除または変更するか、数式を別のセルに移動してください。」と、書かれています。
「循環参照が起きているから修正してください。」というメッセージです。
正しい計算をするために、ダイアログが出てきたらすぐに対処するようにしましょう。
循環参照とは何なのか、原因となっているセルの見つけ方、直し方を画像付きで説明していきます。
何が起きているのかわかってしまえば、直すのは難しいことではありませんのでチャレンジしてみましょう。
循環参照とは
自身が自身のセルを参照している状態、数式に矛盾が発生している状態です。
「1つ以上の循環参照が発生しています。循環参照とは…」のダイアログボックスで【OK】を選択しても循環参照が起きている場所に移動してくれるわけでも、修正してくれるわけでもありません。
自分で見つけて、修正する必要があります。
このダイアログボックスはファイルを開きなおすまで表示されないので、修正しても何か所もある場合はファイルを開くたびにダイアログボックスが出てきます。
慌てず、1つずつ修正しましょう。
循環参照の見つけ方
【数式】タブをクリックします。
【エラーチェック】の▼をクリックし、【循環参照】にカーソルを持っていくと循環参照の原因となっているセル(画像の場合D6)が表示されるのでクリックします。
セルを選択した状態になるので、数式バーを確認して修正します。
注意
【エラーチェック】の▼をクリックし、【循環参照】にカーソルを持っていくと循環参照の原因となっているセル(画像の場合)が表示されますが、循環参照が複数あった場合でも1つのセルしか表示してくれません!
グレーアウトするまで(クリックできなくなるまで)何度か繰り返しましょう。
循環参照の原因と直し方
循環参照の原因は大きく2通りあります。
自己参照、もしくは相互参照している状態。
- 自己参照:答えを式に組み込んでいる状態、
- 相互参照:お互いが答えになっている状態です。
数式中の自己参照
例えばこの上の表では、
数量(B列)×単価(C列)=金額(D列)となっていますが、筆箱の金額が出ていません。
セルの数式を見てみると、数量(B6)×金額(D6)になっています。これでは答え(金額)は出せません。
ダブルクリックすればセルに色が付くので見やすいです。
D6のセルを選択し、「=B6*C6」に修正します。
「=B6*C6」に変更すると、数量×単価がが表示されました。
関数式中の自己参照
金額の合計(D7)が出ていません。
セルを選択すると、「=SUM(D2:D7)」となっており、答え(合計)が数式に組み込まれています。
D7のセルを選択し、「=SUM(D2:D6)」に修正します。
こういった入力ミスは、ドラッグ操作でセルを指定したときにおこりやすいです。
数式中の相互参照
A1のセルには「=B1」、B1のせるには「=A1」となっています。
お互いがお互いを参照しているので、答えが出ていない状態です。
どちらかの数式を削除して、表示させたい数字を入力します。
画像はB1の数式を削除し、300と入力した状態です。
関数式中の相互参照
A4のセルは、「=IF(B4=””,”入力なし”,”入力あり”)」と入力されています。
「もし、B4のセルが空欄だったら、”入力なし”と表示させて、空欄じゃなかったら”入力あり”と表示させる」という関数が入っています。
しかし、B4のセルには、「=IF(A4<>””,”入力あり”,”入力なし”)」と入力されています。
「もし、A4のセルが空欄ではないなら、”入力あり”と表示させて、空欄なら”入力なし”と表示させる」という関数が入っています。
式は違いますが、お互いに空欄かどうかを参照し続けている状態になっています。
A4かB4どちらかの関数を削除すれば解決します。
画像はB4に300と入力したので、A4は入力ありになりました。
数式の表示方法
【数式】タブをクリックし、【数式の表示】をクリックするとセルに入力されている数式を表示させることができます。
下の画像は数式を表示した状態です。
もっと循環参照の原因見つけやすくする方法
循環参照の原因のセルを見つけやすくするには、循環参照を起こしているセルにカーソルを置き、【数式】タブの【参照元トレース】をクリックすると矢印がついて計算式が見やすくなります。
最後に
循環参照の見つけ方、直し方を説明して
Excelファイルを開いた時に、長いダイアログボックスが表示されたら身構えてしまいますが、循環参照のことがわかってしまえば、難しいことではありません。
循環参照は関数の引数をドラッグで指定したり、入力ミスで起こりやすいです。
ミスは誰にでもありえることです。
落ち着いて原因を見つけて対処しましょう。