[[20250107103801]] 『循環参照を無視する』(かない) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『循環参照を無視する』(かない)

D2=IF(D$1=$A$3,P5,D2)

D2のセルに上記の関数を使用しています。
if文でFalseになった場合、すでにD2に入力されている値をそのまま残そうとしています。
そのファイルを開くときに「1つ以上の循環参照が発生しています。」のメッセージが出るようになったので、オプション→数式→反復計算を行うにチェックを入れると、メッセージが表示されなくなりました。
このような設定をして問題ありますでしょうか。

< 使用 Excel:Microsoft365、使用 OS:Windows11 >


>このような設定をして問題ありますでしょうか。

それはあなたの判断・考え方次第というしかないのではないでしょうか。

(とむ) 2025/01/07(火) 10:51:46


>「1つ以上の循環参照が発生しています。」
そのエラーでは正しい計算ができません。
エラーにならないように式そのものを考えましょう。
>このような設定をして問題ありますでしょうか。
あくまでも反復計算のためだけの物なのでエラーとは無関係です。

(匿名) 2025/01/07(火) 11:44:22


それはあなたの判断・考え方次第というしかないのではないでしょうか。

ありがとうございます。そうですよね。
オプションは対象のエクセルだけではなくて、すべてのエクセルに設定が反映されるのでどうしたらいいか考えます。
if文でFALSEになったときに、「FALSE」と表示させずに入力されたデータをそのままにしたかったのですが、if文では難しそうでしたので、今回質問しました。

(かない) 2025/01/07(火) 11:52:43


 反復計算のオプションは設定したブックにしか反映されない。
 で、一応反復計算をオンにしたら辺幅回数も念のため1にしておいたほうがいい。

 今回の式の場合はこれで構わないと思う。

 問題点としてはもし他のセルで循環参照の式を入力してしまったとしてもエラーを出してくれないことだろうか?

 あと、このブックを開いた状態で他のブックを開くとそのブックも反復計算がオンの状態で開かれてしまうことだろうか。
(ねむねむ) 2025/01/07(火) 12:08:18

 おっと
 辺幅回数
   ↓
 最大反復回数
 で。
(ねむねむ) 2025/01/07(火) 13:02:06

反復計算のオプションは設定したブックにしか反映されない。 あと、このブックを開いた状態で他のブックを開くとそのブックも反復計算がオンの状態で開かれてしまうこと>だろうか。

再度確認したら、おっしゃるとおりでした。
とりあえず反復計算をオンにすることにします。

今回の式の場合はこれで構わないと思う。

ありがとうございます。
やりたいのは、「FALSE」と表示させずにすでにあるデータをそのまま表示させたかったのでこの方法でよさそうです。「TRUE」の場合のP5は時々変わります。

問題点としてはもし他のセルで循環参照の式を入力してしまったとしてもエラーを出してくれないことだろうか?

今回のファイルでは、他のセルもD2と同じif文を使うだけですのでたぶん大丈夫です。
(かない) 2025/01/07(火) 13:14:27


>D2=IF(D$1=$A$3,P5,D2)
>すでにD2に入力されている値をそのまま残そうとしています。
これでどうやって値を残すんだろうか。
上書きされて値は残らないだろうに。
(目を覚ませ) 2025/01/07(火) 16:22:43

 一度D1セルとA3セルの値が同じになったときにP5セルの値が表示される。
 でその後D1セルかA3セルのどちらかの値が変更された場合にはその時点でのP5セルの値を維持し続けるようになり、
 P5セルの値を変更しても以前(D1セルとA3セルが同じだった時のP5セルの値)を表示し続けることになる。
(ねむねむ) 2025/01/07(火) 16:34:43

 ああ、これが引っかかるのだろうか?

 >すでにD2に入力されている

 かないさんのしたいことからすると、これを
 すでにD2に表示されている
 としたほうが誤解されずに済むか。
(ねむねむ) 2025/01/07(火) 17:00:40

(目を覚ませ)さん
(ねむねむ)さん

ありがとうございます。
おっしゃるとおりです。
「すでにD2に表示されている」値は「FALSE」と上書きされずに残しておきたい、のがやりたいことです。
(かない) 2025/01/09(木) 08:14:55


ブックのOpenイベントでD2の値を決定するのが良いのでは?
—-
Private Sub Workbook_Open()
    If Range(“B1”).Value= Range(“A3”).Value Then
         Range(“B2”).Value = Range(“P5”).Value
        ‘もしくはRange(“D2”).Value = “=P5”
     End if
End Sub
—-
D2以下のセルにも数式を記入したい場合はもう少し工夫してください。
(T) 2025/01/10(金) 18:55:57

修正
下記をブックモジュールに貼り付け、xlsm で保存してください。

Private Sub Workbook_Open()

    If Range(“D1”).Value= Range(“A3”).Value Then
         Range(“D2”).Value = Range(“P5”).Value
        ‘もしくはRange(“D2”).Value = “=P5”
     End if
End Sub

BとD間違えてました
(T) 2025/01/10(金) 18:58:39


D1セルやA3セルが数式の再計算などによって結果が更新された後に判定させたいなら
シートのChangeイベント等に記述
(T) 2025/01/10(金) 19:02:26

(T)さん
ありがとうございます。
OpenイベントとChangeイベントがよくわからないので調べます。
ファイルと開いたときか、処理されて結果が変わったときか、ということですよね。
マクロにしてこちらのコードを追記すると、今回の希望する動作をするのですね。
一度試してまたコメントします!
(かない) 2025/01/15(水) 08:43:27

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.