我正在使用Excel Solver来基于4个变量来最小化成本。
关键是求解器可以一次求解一个目标单元,但是我需要为多个供应商处理250个项目。我试图对所有价格进行汇总,但求解器最多只能有200个变量,执行它需要花费很多时间。
我的问题是:如何使用宏自动化求解器?
我的数据组织如下:
价格:A到D栏数量限制:E列数量:F至I列需求(取决于数量):J列总价(最小):第K列>
我尝试获得以下1个项目的宏代码:
SolverOk SetCell:="$K$13", MaxMinVal:=2, ValueOf:=0, ByChange:="$F$13:$I$13", _ Engine:=2, EngineDesc:="Simplex LP" SolverAdd CellRef:="$F$13:$I$13", Relation:=4, FormulaText:="integer" SolverOk SolverAdd CellRef:="$F$13:$I$13", Relation:=3, FormulaText:="0" SolverOk SolverAdd CellRef:="$J$13", Relation:=3, FormulaText:="$E$13" SolverOk SolverSolve SolverOk SolverDelete CellRef:="$F$13:$I$13", Relation:=4 SolverDelete CellRef:="$F$13:$I$13", Relation:=3, FormulaText:="0" SolverDelete CellRef:="$J$13", Relation:=3, FormulaText:="$E$13" End Sub
我需要您的帮助才能自动将第7行到257中的代码。
感谢
大卫
我正在使用Excel Solver来基于4个变量来最小化成本。关键是求解器可以一次求解一个目标单元,但我需要针对多个供应商在250个项目上完成。我试图...
[我认为您真正要问的问题是如何在vba中创建LOOP。对于初学者来说,“ for循环”是最简单的。用以下代码开始代码:
For row = 1 To 10
For col = 1 To 7
SolverReset
SolverOptions Precision:=0.001
SolverOK SetCell:="INDEX(ObjFn," & row & "," & col & ")", _
MaxMinVal:=3, _
ValueOf:=0, _
ByChange:="INDEX(ByChanging," & row & "," & col & ")"
solverResult = Application.Run("SolverSolve", True)
Next col
Next row