• ベストアンサー

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

エクセルのマクロで、 セル値[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

  • Excel ゴールシークについて

    Excelのゴールシーク機能について聞きたいことがあります。 普通に使いこなせてはいるのですが、ゴールシークで求める値が膨大な量で1回1回ゴールシークを開いて値を入力してとやっていては、らちがあかないのです。 セルでは黒十字を表示させてドラッグして一度に計算ができますが、ゴールシークでも同じようにたくさんの量を一度に計算することはできるのでしょうか。 教えてください。よろしくお願いします。

  • ゴールシークについて

    P=[RT/(v-b)]-a/v^2 という式のvをゴールシークを用いて求めよといわれました。 P,R,T.a.b,の値はそれぞれセル上にあります。 ゴールシークというものを使ったことがないので、この先どうすればvを求められるか教えてください。

  • エクセルのマクロでゴールシークの繰り返し

    こんにちは。マクロ初心者です。 現在、エクセルのゴールシーク機能を繰り返し使うためにマクロを作っています。 下のプログラムでアクティブセルのゴールシークは行えるようになったのですが、これをアクティブセルが空白になるまで繰り返すことはできますか? できればiを使わないようにしたいのですが‥ ActiveCell.goalseek Goal:=ActiveCell.Offset(0, -1).Value, ChangingCell:=ActiveCell.Offset(0, -3).Range( _ "A1") ちなみに違う人が使っていた Do Until ActiveCell.Previous.Value = "" を使おうと思ったらパソコンが動かなくなってしまいました‥ 基本ができていない為にめちゃくちゃなことをしているのかもしれませんが、どうかアドバイスをお願い致します。

  • 【エクセル】ゴールシークをマクロで使う方法は?

    よろしくお願いいたします。 ゴールシークを組み込んだマクロを作成したいのですが どのように行ったら良いでしょうか? ご存知の方、お教え願います。

  • マクロの自動化

    お世話になります。 このたびエクセルでマクロを利用してある計算をしようとしたところ、行き詰ってしまったので質問させてもらいます。 やろうとしている計算は定数が4つ、変数が1つの3次関数の変数をゴールシークをつかって解くというもので、ゴールシーク動作のマクロ化までは成功しています。 ちなみに一応式を書いておくと以下のような感じです。 変数:x 定数:a b c d ax^3+bx^2+cx+d=0 では何に行き詰っているのかというと、そのゴールシークマクロの自動化です。 私の目指す自動化というのは、定数部分abcdが変化した際に変数の解が自動で導き出されるというものです。 しかし、私が探して見つけた目指す自動化に近い自動化の方法はどれも 定数セル内が変更された際に自動で再計算を行うというものでした。 今回の私のエクセルでは、各定数を求めるまでに相当長い計算プロセスがあり 必要な数値の入力(数字)⇒別セルへリンク&計算⇒最終的な定数の算出 となっているため、最終的な定数の算出のセルでは例えば=A363などとなっているためセル内が変更されたとは見なされず、再計算をしてくれません。 また、最初の必要な数値の入力において数値が変化したときにマクロを自動で走らせようにも その数が多すぎてとても追いきれません。 分かりにくい質問となってしまったと思いますが、どなたか私が目指す自動計算の組み方を教えていただけないでしょうか。 もちろん、ゴールシークやマクロにこだわらず、自動で計算してくれる方法があるのであればそれでも構いません。 よろしくお願いいたします。

  • ゴールシークについて

    エクセルのゴールシークを利用して解きたい問題があるのですが、 「セルに入力した数式の計算結果は数値でなければなりません」と表示されてしまいます。 「変化させるセル」が「数値入力セル」の分母であることが原因だと思われますが、 解決法がわかりません。 ご教示のほどよろしくお願いします。

  • EXCEL ゴールシークの関数?

    EXCEL ゴールシークの関数? ゴールシークを画面操作をしなくて ゴールシーク機能を持つ 関数はありませんか? 無ければ 複合関数は? VBを使わないでEXCEL関数だけで 求める方法を探しています。

  • エクセルのゴールシークについて

     エクセルのゴールシークについて質問します。  実際に解が存在するにもかかわらず、計算式・目標値の条件によっては、解が求まらない場合があります。  私の場合、以下の計算を実行しましたが、解が求まりませんでした。 =SIN(ATAN(1/1500))-0.02^2*2000^2/(2*α+100)^(4/3)/(100*α)^2 変数>α 目標値>0.0 他の目標値では解が求まりました。  解決方法が分かれば教えてください。  よろしくお願いします。

  • エクセルのメニューバーからゴールシークが消えてしまった。

    はじまして。 オフィス2000,エクセル2000を使用しています。 エクセルでアイコンの新規作成をしようとしました。(ゴールシークというものですが) ユーザー設定を使いメニューバーから直接ドラッグアンドドロップしたらうまくいかず、おまけにメニューバーからもゴールシークの項目が消えてしまいました。どこを探してもゴールシークが見つかりません。 再びゴールシークを使うようにするにはどうしたらよいのでしょうか。

  • エクセルのゴールシークを自動で連続して求めたい

    ゴールシーク機能はとても便利ですが、 これを行うには、一回一回、ツールバーからこれを選択するか、 マクロを記録するなどして、実行ボタンを作成しなくては いけません。 これを自作関数化するなどして、エクセルを開いている間、 自動的に、連続して算出する ようなことは可能でしょうか。 いろいろと調べては見たのですが、どうしても 分かりませんでした。。 ご存知の方がいらっしゃいましたら、 是非ご教授ください。

専門家に質問してみよう