Page 380 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 通常モードに戻る ┃ INDEX ┃ ≪前へ │ 次へ≫ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ▼繰り返し(集束)計算をしたいのですが。 まり 02/11/20(水) 23:45 ┗Re:繰り返し(集束)計算をしたいのですが。 ichinose 02/11/21(木) 1:05 ┗Re:繰り返し(集束)計算をしたいのですが。 まり 02/11/23(土) 0:10 ─────────────────────────────────────── ■題名 : 繰り返し(集束)計算をしたいのですが。 ■名前 : まり ■日付 : 02/11/20(水) 23:45 -------------------------------------------------------------------------
マクロを使った事がないので何方か分かり易く教えて下さい。 【今のセルの情報】 1.セルA1とB1に異なる定数が入力されています。 2.セルA2とB2にそれぞれ0.01から5まで0.01飛びに自動で入力させます。 3.セルA3とB3には2.の数値に応じた計算結果が出力されるように関数がプログラム されています。A3とB3のプログラムの間には相互作用があります。 つまり、A2が大きいとB3は小さくなり、B2が大きいとA3は小さくなります。 【やりたい事】 1.A3がA1に最も近い数字になり、且つB3がB1に最も近い数字になるまで 繰り返し計算をさせたい。最終的にその時にA2とB2の数値が知りたい。 (近さは±1以内で有れば可) 【手計算の場合(参考)】 1.A2にO.O1から順番に入力してA3がA1に最も近い値まで行う。 2.次にB2に同様に行いB3がB1に最も近い値まで行う。 3.この時A3は変化するにで、上記1.2.を何度も繰り返す。 |
▼まり さん: こんばんは。 >マクロを使った事がないので何方か分かり易く教えて下さい。 >【今のセルの情報】 >1.セルA1とB1に異なる定数が入力されています。 >2.セルA2とB2にそれぞれ0.01から5まで0.01飛びに自動で入力させます。 >3.セルA3とB3には2.の数値に応じた計算結果が出力されるように関数がプログラム > されています。A3とB3のプログラムの間には相互作用があります。 > つまり、A2が大きいとB3は小さくなり、B2が大きいとA3は小さくなります。 >【やりたい事】 >1.A3がA1に最も近い数字になり、且つB3がB1に最も近い数字になるまで > 繰り返し計算をさせたい。最終的にその時にA2とB2の数値が知りたい。 > (近さは±1以内で有れば可) >【手計算の場合(参考)】 >1.A2にO.O1から順番に入力してA3がA1に最も近い値まで行う。 >2.次にB2に同様に行いB3がB1に最も近い値まで行う。 >3.この時A3は変化するにで、上記1.2.を何度も繰り返す。 関数の内容がわからないためこちらでテストできないので、すごく心配ですが、 '================================================================== Sub test() Dim a(1 To 3) As Range 'セルA1〜A3までを入れる変数 普通range("a1")と書くのが面倒なので Dim b(1 To 3) As Range 'セルB1〜B3までを入れる変数 Dim a2val, b2val 'セルA2、B2の変化値 Dim ok As Boolean '答えが見つかったら、True For i = 1 To 3 Set a(i) = ActiveSheet.Cells(i, 1) Set b(i) = ActiveSheet.Cells(i, 2) Next i '取りあえずここまでは、セルを変数にセット ok = False '初期設定 a2val = CDec(0.01) 'セルA2の変化値の初期設定 Do While a2val <= CDec(5) And ok = False 'セルA2の変化値が5以下且つ、答えが見つかっていない間はループする a(2).Value = a2val 'セルA2に変化値をセット b2val = CDec(0.01) 'セルB2の変化値の初期設定 Do While b2val <= CDec(5) And ok = False '↑セルB2の変化値が5以下且つ、答えが見つかっていない間はループする b(2).Value = b2val 'セルB2に変化値をセット If Abs(CDec(a(1).Value) - CDec(a(3).Value)) <= 1 And Abs(CDec(b(1).Value) - CDec(b(3).Value)) <= 1 Then '↑A1-A3の差が+-1且つ、B1-B3の差が+-1 ok = True '答えが見つかった End If b2val = b2val + CDec(0.01) 'セルB2の変化値を増幅 Loop a2val = a2val + CDec(0.01) 'セルA2の変化値を増幅 Loop If ok = True Then '答えが見つかっていれば MsgBox "セルA2、B2が答え" Else MsgBox "解なし" End If End Sub 試してみて下さい。 |
▼ichinose さん: どうもありがとうございました。 本当に初心者なので、実際のセルに当てはめる為に下記に悪戦苦闘しています。 A1がセルK71、B1がL71、A2がG75、B2がG76、A3がK72、B3がL72であるのに対し 変数の定義の部分が分からず、色々と勉強しています。 繰り返し計算のところへはまだ目が行っていないので、もう少し時間が掛かると 思います。 |