excel - 循环求解器宏
问题描述
我正在尝试遍历一长串行,以优化模型 J 列中的“最低成本”解决方案。
C、D、E 和 F 列中有四个变量,从第 9 行到第 50 行以及一些约束。
通常对 VBA 来说相当新,但最初的单行求解器代码如下所示,基本上需要继续重复该过程,然后通过更改变量 C10 - F10 求解 J10,然后移至第 11 行等。
任何开始循环过程的指针将不胜感激!
干杯!
Sub Macro11()
SolverOk SetCell:="$J$9", MaxMinVal:=2, ValueOf:=0, ByChange:="$C$9:$F$9", _
Engine:=1, EngineDesc:="GRG Nonlinear"
SolverAdd CellRef:="$C$9", Relation:=1, FormulaText:="23"
SolverAdd CellRef:="$D$9", Relation:=1, FormulaText:="23"
SolverOk SetCell:="$J$9", MaxMinVal:=2, ValueOf:=0, ByChange:="$C$9:$F$9", _
Engine:=1, EngineDesc:="GRG Nonlinear"
SolverOk SetCell:="$J$9", MaxMinVal:=2, ValueOf:=0, ByChange:="$C$9:$F$9", _
Engine:=1, EngineDesc:="GRG Nonlinear"
SolverSolve
SolverOk SetCell:="$J$9", MaxMinVal:=2, ValueOf:=0, ByChange:="$C$9:$F$9", _
Engine:=1, EngineDesc:="GRG Nonlinear"
End Sub
解决方案
输入由表示范围的字符串定义,因此通过与循环变量连接来创建范围字符串:
Sub Macro11()
Dim iRow As Integer
For iRow = 9 To 50
SolverOk SetCell:="$J" & iRow, MaxMinVal:=2, ValueOf:=0, ByChange:="$C" & iRow & ":$F" & iRow, _
Engine:=1, EngineDesc:="GRG Nonlinear"
SolverAdd CellRef:="$C" & iRow, Relation:=1, FormulaText:="23"
SolverAdd CellRef:="$D" & iRow, Relation:=1, FormulaText:="23"
SolverOk SetCell:="$J" & iRow, MaxMinVal:=2, ValueOf:=0, ByChange:="$C" & iRow & ":$F" & iRow, _
Engine:=1, EngineDesc:="GRG Nonlinear"
SolverOk SetCell:="$J" & iRow, MaxMinVal:=2, ValueOf:=0, ByChange:="$C" & iRow & ":$F" & iRow, _
Engine:=1, EngineDesc:="GRG Nonlinear"
SolverSolve
SolverOk SetCell:="$J" & iRow, MaxMinVal:=2, ValueOf:=0, ByChange:="$C" & iRow & ":$F" & iRow, _
Engine:=1, EngineDesc:="GRG Nonlinear"
Next iRow
End Sub
推荐阅读
- java - 当移动到第二个片段时,第一个片段正在显示
- java - JAVA MODBUS 错误
- excel - 如何在 Excel 中创建一个文件,从查询编辑器刷新并处理它
- ionic-framework - 如何在键盘上方放置页脚(Ionic 3)
- r - R Plotly:使用颜色变量时更改绘图颜色
- python - 如何在python的数据框中比较连续的字符串值
- google-cloud-platform - 谷歌云:使用 Bigquery 或其他服务进行矩阵乘法?
- vba - VBA Sumifs 将结果粘贴为值
- java - JPQL 中具有类型列表属性的投影
- sql - 100 个逗号分隔的随机计数器位置值求和并显示过去 60 分钟的统计数据