2013年2月28日木曜日

【Excel・Solver】ソルバーをVBAで実行


エクセル(Excel 2010)のソルバーをVBAで実行する例。

~例:下のグラフの様な二次関数のy=0となるxを求める~





1)データ>ソルバーで”ソルバーのパラメーター”ウインドウを立ち上げる
2)ウインドウで最適化したいセル(ここではA2)を”目的セルの設定”

3)目的セルの目標値(最大値、最小値、指定値)を設定。ここでは”0”

4)変化させるセル(変数セルの変更)を設定。ここでは”B2”

5)制約条件(制約条件の対象)を設定。ここでは"B2≦10"を指定。xは"3"と"13"二つの可能性があるため制約条件を入れて一つの解に収束させています。

6)実行(”解決”ボタン)する
 


解析前(初期値=10)
解析後(x=3)








マクロで実行する場合のVBAコード
--------------------------------------------------------------------
Sub Macro1()

    SolverOk SetCell:="$A$2", MaxMinVal:=3, ValueOf:=0, ByChange:="$B$2", Engine:=1 _
        , EngineDesc:="GRG Nonlinear"

    SolverAdd CellRef:="$B$2", Relation:=1, FormulaText:="10"
   ’SolverAddで制約条件を設定。Relationは1が≦、2が=、3が≧

    SolverSolve UserFinish:=True
     ’解析後の確認画面を表示させない(=”OK”)
End Sub
--------------------------------------------------------------------
参考:msdn.microsoft