0
我已经搜索和搜索,我无法弄清楚这一点。很感谢任何形式的帮助。VBA解算器每次粘贴结果
我正在运行一个基本的单纯形求解器。根据预测(H列)和薪金(G列),我希望得出最高数额$ A $ 4。我的约束是稳定的,但我无法循环,然后在某处粘贴结果。二进制解决方案在列A中,总共有6个结果为200.我在“优化程序1”中拥有所有这些数据,并且希望每次都将结果粘贴到“列表”中,从单元格A1-A6开始,然后第二个循环将是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将其移动到另一个工作表“线”,它给我的总和。第一个结果是最优化的,然后我想找到第二个最多,第三个最多等等。
我的另一个问题是我如何使基于单元的我(我循环的时间)?如果可能,我希望能够改变这一点。
希望有人可以提供帮助。这是我第一次尝试VBA。谢谢!