[Excel] ソルバーを使用して VBマクロを作成する
[Excel] ソルバーを使用して VBマクロを作成する方法
MSの公式サイト(http://support.microsoft.com/kb/843304/ja)の解説は、機械翻訳のため、分かりにくい。
以下の手順で、最適化ツール Solver をマクロの中で利用できる。
■準備:[参照設定]
(1)VBA のエディタを開く
(2)メニュー[ツール]-[参照設定]をクリック
(3)"SOLVER.xls" を指定する
■マクロ:以下のコマンドを使用
(1)SolverOK(SetCell, MaxMinVal, ValueOf, ByChange):モデル定義
(2)SolverSolve(UserFinish, ShowRef):実行
(3)SolverFinish (KeepFinal、ReportArray):完了
■例文:連続的なデータから順に抽出して、Solverを実行し、結果を順に格納する。
Sub Solver繰り返しマクロ()
For i = 1 To 100
'データ(B31+i-1前後9点)の値を(B5-B13)にコピー
Range("B5:B13").Value = Range(Cells(i + 30 - 4, 2), Cells(i + 30 + 4, 2)).Value
' パラメータ設定:目的セル=D14、パラメータセル=E9-G9
' 条件:MaxMinVal =2 (目的セルを最小値にする;最大にするなら1;特定値にするなら3)
SolverOk SetCell:="D14", MaxMinVal:=2, ValueOf:="0", ByChange:="E9:G9"
' 結果ボックスを非表示
SolverSolve UserFinish:=True
'結果(E9-G9)の値を5-7列目の31行以下にコピー
Range(Cells(i + 30, 5), Cells(i + 30, 7)).Value = Range("E9:G9").Value
' 終了&結果を保持(破棄&元の値を復元なら=2)
SolverFinish KeepFinal:=1
Next i
End Sub
| 固定リンク
「パソコン・インターネット」カテゴリの記事
- [IE] パスワード画面が開かなくなった(2009.11.15)
- [PDF] PDFファイルに書き込みする方法(2009.11.07)
- [Excel] 特定の行(or セル)にジャンプする方法(2009.11.06)
- [Excel] 指定した順位のデータを取り出す方法(2009.11.06)
- [Notes] C.DTF という添付ファイルが開けられない問題(2009.11.05)


コメント