• ベストアンサー

エクセルの循環参照についてです。

業者ごとによって数値算出し、その算出した数値をページ区切りで合計していく。 というものを作っているのですが、下記の画像のAパターンは右側の数式にて 上手くいっているのですが、Bパターンのほうは、数が1個少なくなっているのと、””で空白を作り出している。以外は変わらないはずなのに、なぜかBパターンだけ、循環参照が出ています。 Bパターンを最初のsumの後を=0,"0"にして数字以外一緒にしていても変わりませんでした。 そもそも循環参照はセルが被っていたら出る現象というように私はとらえていたので、なぜこの式でエラーが出るのかがわかりません。 説明がへたくそなので、ほかにこの現状を分かるために必要な点がある場合、言っていただけると助かります。 お手数ですが、このエラーの解決方法をお教えいただければ幸いです。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

以下の手順で解決する筈です。 1.N60:O60のセル結合を解除する 2.O60に入っている「N61を参照する式」を編集して修正する 3.N60:O60のセルを結合し直す N60とO60が結合され、O60に触れない状態になっている為、O60に「循環参照の原因となる式が入力」されていても、削除も編集も出来ません。 >そもそも循環参照はセルが被っていたら出る現象というように私はとらえていたので 違います。循環参照とは「Aの値がBにより決まり、Bの値がAにより決まる」と言うような状態の時に起きます。 言い換えると「Aを計算する為にBを参照していて、Bを計算する為にAを参照している」と言う状態です。 もっと複雑に「Aを計算する為にBを参照していて、Bを計算する為にCを参照していて、Cを計算する為にAを参照している」と言うケースもあります。 依存関係が「A⇒B、B⇒C、C⇒A」となっている場合は「Aの値を決める為にはBの値が決まっていないとならず、Bの値を決める為にはCの値が決まっていないとならず、Cの値を決める為にはAの値が決まっていないとならず、Aの値を決める為にはBの値が決まっていないとならず、Bの値を決める為にはCの値が決まっていないとならず、Cの値を決める為にはAの値が決まっていないとならず(以下、永久に繰り返し)」と言う状態になってしまい、値が永久に決まりません。 この「値が永久に決まらない状態」になっているのが「循環参照」です。 この循環は「A⇒B、B⇒A」とか「A⇒B、B⇒C、C⇒D、D⇒E、E⇒A」とかって場合もあります。 今回は「A⇒B、B⇒A」という単純な循環参照なので、循環の原因である「O60に入っている変な式」さえ削除すれば直ります。 「セル結合されて見えなくなっているセルに入っている式も、循環参照の原因になる」ので、注意して下さい。 一度、N列とO列のセル結合をすべて解除して、O列の各セルに「何か変な式」が入力されてないか、確認する事をお勧めします。「変な式が入っている」のが「O60だけとは限らない」ですから。 なお、当方は「13~29行の範囲をコピーして、46~62行に貼り付けて、46~62行の表を1行減らして46~61行の範囲に編集し直した時に、セル接合されていて式が編集できなかったO60に未編集の式が残った」と想像します。 つまり「A列からN列は、式を編集して表を1行減らしてあるが、O列はセル結合してあったので編集し忘れた」と思われます。 こういう場合は「セル結合でO列を隠す」のではなく「O列の列幅をゼロにして隠す」方が便利です。O列の式を編集したくなったら「O列の列幅を元に戻す」だけで済みます。

ATAMAbakanako
質問者

お礼

ご回答ありがとうございます! chie65535さんの推測通り、O列に余計な式が入っていました! それを取り除いて(その式はいらなかったので)再結合したらうまくいきました! また、循環参照についてもとても分かりやすく説明いただき、勉強になりました!! ありがとうございました!!助かりました!!

その他の回答 (1)

  • bunjii
  • ベストアンサー率43% (3589/8249)
回答No.2

>Bパターンのほうは、数が1個少なくなっているのと、””で空白を作り出している。以外は変わらないはずなのに、なぜかBパターンだけ、循環参照が出ています。 添付画像の数式では循環参照になりませんので再確認が必要です。 添付画像では数式で参照しているセル範囲の全域を表示していませんので画像の差し替えが必要です。 尚、IF関数の論理式が不自然なものに思われます。 「SUM(N46:O60)=""」はO列がN列と結合されているので範囲をN46:N60で良いと思います。 また、SUM関数は範囲内の数値の合計を求めるものなのでSUM関数の結果と文字数0の文字列と比較するのは無意味です。 提示の情報からは循環参照の原因を見つけることができません。

ATAMAbakanako
質問者

お礼

ご回答ありがとうございます。 sum関数は選択したいセルが全て結合していたので、ドラッグ選択の時に自動でN:Oになってしまったのですが、あれはやはりN列だけの選択でよかったんですね! とても参考になりました。 ありがとうございました!

関連するQ&A