• ベストアンサー

EXCELで無限ループになってしまいました.

EXCELで 例えば C1に =A1*B1 E1に =C1*D1 でE1をC1に移動するとループになりますよね. その場合はどうすれば言いのですか? 実際にはsheet10!D32424の値をsheet1のR32に移動するとループになります.

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

  • ベストアンサー
  • zap35
  • ベストアンサー率44% (1383/3079)
回答No.2

質問にあるとおりの入力を行い、E1をC1に移動するとC1は#REF!エラーになります。これは「ループ」とは呼びません。「循環参照」です。例えばA2セルに =A2 と入れてみて下さい。エラーメッセージがでるはずです。 エクセルの数式で、その数式を入力したセルの値を参照する場合循環参照となりエラーになります。循環参照があると計算結果は不正となり、エクセル画面の一番下に小さく「循環:セルのアドレス」が表示されているはずです。 どうすればよいか。それは数式で「自分のセルドレスを参照しない」ように修正すればよいです。 なお「ループ」とはプログラム(EXCELのマクロを含む)で処理が無限に終わらない状態を言うのが一般的です。この質問の場合はあまり適切な表現ではありませんね。

その他の回答 (2)

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.3

こんばんは。 一体、何を求めるかであって、式の移動によるエラー(参照エラー #REF!)は、結果論ではありませんか? >実際にはsheet10!D32424の値をsheet1のR32に移動するとループになります. だから、Sheet10の D32424 の値を、Sheet1のR32 に求めるのであれば、=Sheet10!D32424 と入力すれば、その値は得られるわけです。移動と考えるから、分からなくなるのではありませんか?式によって得ようとするセルの値(参照セル)なのだと思います。

回答No.1

私の理解力不足をさらすようで恥ずかしいのですが、ご参考まで。 何をなさりたいのか、良く分かりませんでした。数式で書くと ・・・A*B*(A*B*(C*D)*D)*D・・・ のような計算をされたいということでしょうか。数式でも無限大乗になるのでしたら、Excelの数式/関数やマクロでも計算できないと思います。 再帰呼び出しの例として、階乗が取り上げられることがあると思いますが、このような事例であれば、階乗がそうであるようにユーザー定義関数を作成すれば対応可能と思います。

関連するQ&A