• ベストアンサー

エクセルのマクロ、「ゴールシーク」繰返し文。

エクセルのマクロで、 セル値[A1]が、範囲内(10から-10)に成るまで、 「ゴールシーク」を、10回だけ繰返す、 マクロ文を教えて下さい。 (変数セル[B1])

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

  • ベストアンサー
  • mo2yakko
  • ベストアンサー率54% (30/55)
回答No.2

ゴールシークは計算された結果(式)から、代入値(目標値)になるように、逆算するです 式(A1)の結果(10~-10)を求める為に逆算しB1の値を変更します。 ゴールシーク使わずループでB1に値を設定して、 A1の値を確認すれば良いかと Sub Macro1() Dim i As Integer With ThisWorkbook.Sheets(1) .Select '10回繰り返す。 For i = 1 To 10 'C列にある変数をB1に設定 .Range("B1") = .Cells(i, 4) 'A1の値が範囲内ならループを抜ける If .Range("A1") >= -10 And .Range("A1") <= 10 Then Exit For End If Next End With End Sub 'B1の値を求める為なら・・・ Sub Macro3() Dim i As Integer With ThisWorkbook.Sheets(1) .Select '10回繰り返す。 For i = 1 To 10 'A1の計算式で目標値(D1~D10)にする為にB1の値を変更する。 .Range("A1").GoalSeek Goal:=.Cells(i, 4), ChangingCell:=.Range("B1") 'B1の値が範囲内ならループを抜ける If .Range("B1") >= -10 And .Range("A1") <= 10 Then Exit For End If Next End With End Sub

gimon8
質問者

お礼

回答、有難うございました。 早速、利用させて頂きました。 大変、助かりました。

すると、全ての回答が全文表示されます。

その他の回答 (1)

  • mo2yakko
  • ベストアンサー率54% (30/55)
回答No.1

ゴールシークは計算式を逆算する処理なのでA1は値ではなく 計算式でなければなりません。 私にはやりたい事がさっぱり理解できていません。 (10回繰り替えしても10回目の値がB1に出力されているだけでは?) なのでてきとーなマクロを作成しています。 B列に入力された値をA1で合計している。 D列に設定した目標値に対してB1をゴールシークを使って変更 E列にその結果を出力してます。 ------------------------------ A1に計算式=SUM(B1:B10) B1~B10には適当な値を入力しておく D1~D10には目標値を入力しておく(-10~10) E1~E10には結果 Sub Macro1() Dim i As Integer With ThisWorkbook.Sheets(1) .Select '10回繰り返す。 For i = 1 To 10 'A1の計算式で目標値(D1~D10)にする為にB1の値を変更する。 .Range("A1").GoalSeek Goal:=.Cells(i, 4), ChangingCell:=.Range("B1") '結果をE1~10に .Range("E" & i) = .Range("B1") Next End With End Sub

gimon8
質問者

補足

早々、回答有難うございます。 説明が、不十分で申し訳有りません。 セル[A1]には、式が、設定されています。 ゴールシークを実施後、計算結果の、セル値[A1]を確認し、 セル値[A1]が、10から-10の間なら、 計算を終了し、(10から-10)以外の場合に、 もう一度、ゴールシークを実行するようしたいのです。 但し、10回ゴールシークを実行しても、 セル値[A1]が、(10から-10)以外の場合でも、 終了となるように、処理をしたいと思っています。 宜しく、お願いします。

すると、全ての回答が全文表示されます。

関連するQ&A