[[20190402105603]] 『循環参照の回避方法』(通りすがり) ページの最後に飛ぶ

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

 

『循環参照の回避方法』(通りすがり)

お世話になります。

今、Shhet2で
B1=Max(Sheet1!A:A)
B4=Min(Sheet1!A:A)
です。

スクロールバーを2個配置し、一方は
C2に、他方はC3にリンクさせています。(共に0-100%レンジ)

D2=(B1-B4)*(100-C2)/100+B4
として抽出用最大値
D3=(B1-B4)*(100-C3)/100+B4
として抽出用最小値
を設定します。

抽出用値が大小逆転しない為に
B2=IF(D2<B3,B3,D2)
B3=IF(D3>B2,B2,D3)
としたかったのですが、B2とB3は循環参照になってしまいます。

循環参照にしない様に
B2>B3をキープする方法は無いでしょうか。
Worksheet_Change()を使う手も考えましたが
Bookをxlsx形式で保存したいという要望もあり、
なんとかうまい手は無いでしょうか。

< 使用 Excel:Excel2016、使用 OS:Windows10 >


よく理解していないかもしれませんが。

B2: =MAX(D2:D3)

B3: =MIN(D2:D3)

ではダメなんですか?
(メジロ) 2019/04/02(火) 11:48


メジロさん。回答ありがとうございます。

それだと確かに循環しないのですが、
スクロールバーを中間付近からスクロールしたとき、
B2を動かす側を下げていくとB3が下がってしまいます。
B2はB3以上ですが、B3を動かすのは他方のスクロールバーのみとしたいのです。

やはり無理なのでしょうか。
(通りすがり) 2019/04/02(火) 11:54


 >スクロールバーを中間付近からスクロールしたとき、 
 >B2を動かす側を下げていくとB3が下がってしまいます。 

 そんなにB2の値を下げた人が悪いんじゃないですか?

 そうは言っても、そんな輩は必ず出てきますよね。(ミス操作ってこともあります)

 ・・で、その時どう言う結果になればいいんですか?

 そこの説明が肝心ですよ。

 ※具体的数値を使って説明されれば、もっと分かり易くなるんですが・・多くは望めないでしょうね・・

(半平太) 2019/04/02(火) 14:37


半平太さん。ありがとうございます。

Sheet1にデータが数千個あります。
このうちの部分抽出をしたものから平均値などの加工データを作成したいと思っています。

部分抽出の方法はセル区間ではなく値区間です。
値区間の大きい方をSheet2のB2に、
値区間の小さい方をSheet2のB3に入れます。
B1はSheet1!A:Aの最大値
B4はSheet1!A:Aの最小値
にしました。

B2とB3は値入力ではなく、スクロールバーで視覚的に入力したいと言う目的です。

このとき、
B1>B2>B3>B4
の大小関係がキープできる様にしたかったのです。

作業用セルとしてC2とC3に0-100の値が入る様にスクロールバーのリンクを設置しました。
D列はスクロールバーが示す直接の値を演算しました。これも作業セルですが、
そのままB2=D2、B3=D3としました。

このままでは、C2とC3の値(スクロールバーの位置)が逆転した時に
B2とB3の大小関係も逆転してしまうのです。

B2の変化幅はB1〜B3で、B3の変化幅はB2〜B4としたいのです。
B2とB3で循環参照にならない様な式は書けないでしょうか。

まだ解り難い説明であったならすみません。
なかなか伝えにくいです。

(通りすがり) 2019/04/02(火) 15:08


>このままでは、C2とC3の値(スクロールバーの位置)が逆転した時に
>B2とB3の大小関係も逆転してしまうのです。

こうなってしまった時にB2,B3がどうなるのが希望か書いてください。
(cal) 2019/04/02(火) 15:46


 >このままでは、C2とC3の値(スクロールバーの位置)が逆転した時に 
 >B2とB3の大小関係も逆転してしまうのです。 

 >B2の変化幅はB1〜B3で、B3の変化幅はB2〜B4としたいのです。 

 >B2はB3以上ですが、B3を動かすのは他方のスクロールバーのみとしたいのです。

 要望が両立しないです。

 何を諦めるか、何を制限するか、しかないです。

(半平太) 2019/04/02(火) 15:49


calさん。ありがとうございます。

逆転しないように頭打ちにしたいのです。
例えば:
B1=100
B4=0

B2=80の時
B3は80までしか上がらない
同じく
B3=30ならB2は30までしか下がらない
という風にしたいのです。

半平太さん。ありがとうございます。
やはり両立は無理ですか。

マクロは試してないですが、セル値変更イベントを使えばできるのかな、と思っています。
となると、あきらめるのはマクロなしブックと言う事になりそうですね。

calさん。半平太さん。メジロさん。
ありがとうございました。

(通りすがり) 2019/04/02(火) 16:41


 B2=80、 B3=85となってしまった状況の直前が
 B2=90、 B3=85だったのか、B2=80、 B3=75だったのかで
 頭打ちにしたいセルが違うわけですよね。

(cal) 2019/04/02(火) 20:09


calさん。コメントありがとうございます。

そうなんです。

何か別案を考えてみます。
マクロ化するか、中央値と幅のスクロールバーに変更するか。
どちらにしてもやりたいへの実現条件からは外れてしまいますが。

また悩む事があったらご協力下さい。
(通りすがり) 2019/04/03(水) 09:31


コメント返信:

[ 一覧(最新更新順) ]


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