過去ログ

                                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.を何度も繰り返す。
 ───────────────────────────────────────  ■題名 : Re:繰り返し(集束)計算をしたいのですが。  ■名前 : ichinose  ■日付 : 02/11/21(木) 1:05  -------------------------------------------------------------------------
   ▼まり さん:
こんばんは。

>マクロを使った事がないので何方か分かり易く教えて下さい。
>【今のセルの情報】
>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

試してみて下さい。
 ───────────────────────────────────────  ■題名 : Re:繰り返し(集束)計算をしたいのですが。  ■名前 : まり  ■日付 : 02/11/23(土) 0:10  -------------------------------------------------------------------------
   ▼ichinose さん:
どうもありがとうございました。
本当に初心者なので、実際のセルに当てはめる為に下記に悪戦苦闘しています。
A1がセルK71、B1がL71、A2がG75、B2がG76、A3がK72、B3がL72であるのに対し
変数の定義の部分が分からず、色々と勉強しています。
繰り返し計算のところへはまだ目が行っていないので、もう少し時間が掛かると
思います。
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━    通常モードに戻る  ┃  INDEX  ┃  ≪前へ  │  次へ≫    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━                                 Page 380