私は検索して検索しましたが、これはわかりません。どんな助力も非常に感謝しています。VBAソルバーは毎回結果を貼り付けます
私は基本的なシンプレックスソルバーを実行しています。私は投影(列H)と給料(列G)に基づいて最大数$ A $ 4を考えています。私の制約はしっかりしていますが、ループさせて結果をどこかに貼り付けることができません。バイナリ解は列Aにあり、合計で6の結果が200個になります。このデータはすべて「オプティマイザ1」にあり、その結果を「リスト」に貼り付けたい場合は、セルA1-A6から開始します。 2番目のループはA7-A13などとなります。これを20回実行したいと思います。
私が今使っているコードは次のとおりです。
For i = 0 To 20 Step 1
Application.Calculation = xlAutomatic
Calculate
SolverReset
SolverAdd CellRef:="$A$2:$A$201", Relation:=2, FormulaText:="binary"
SolverAdd CellRef:="$X$4", Relation:=2, FormulaText:="$X$6"
SolverAdd CellRef:="$Z$4", Relation:=1, FormulaText:="$Z$6"
SolverAdd CellRef:="$AE$3", Relation:=2, FormulaText:="$AF$3"
SolverAdd CellRef:="$AA$4", Relation:=1, FormulaText:=Worksheets("Optimizer 1").Range("$AA8").Offset(i, 0).Address
SolverOk SetCell:="$AA$4", MaxMinVal:=1, ValueOf:=0, ByChange:="$A$2:$A$201", _
Engine:=2, EngineDesc:="Simplex LP"
SolverSolve
SolverSolve (True)
SolverFinish KeepFinal:=1
If i = 0 Then
Worksheets("List").Range("A1").Resize(6, 1).Value = _
Worksheets("Optimizer 1").Range("b2:B201").Value
Else
Worksheets("List").Range("a1").End(xlUp).Offset(6).Resize(200, 1).Value = _
Worksheets("Optimizer 1").Range("b2:b201").Value
End If
Next i
End Sub
私は「一覧」にそれを持っていたら、私はそれが私の合計を与える別のシート「行」、に移動するためにVLOOKUPを持っています。最初の結果が最も最適で、次に2番目に多いもの、3番目に多いものなどを見つけたいと思います。
もう1つの質問は、どのようにしてセルに基づいてiを作ることができますか?私は可能な限りそれを変更できるようにしたい。
誰かが助けてくれることを願っています。これは初めてのVBAの試みです。ありがとうございました!