EXCEL解算器自动化

问题描述 投票:0回答:2

我正在使用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个项目上完成。我试图...

excel vba automation solver
2个回答
0
投票

[我认为您真正要问的问题是如何在vba中创建LOOP。对于初学者来说,“ for循环”是最简单的。用以下代码开始代码:


0
投票
 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
© www.soinside.com 2019 - 2024. All rights reserved.