我在Excel VBA宏中创建的Solver模型中的一个等式如下:
SolverAdd CellRef:="$M$18:$M$30", Relation:=2, FormulaText:="$N$18:$N$30"
我怎样才能实现它,以便行号“18”是一个可以作为来自另一个单元格的输入读取的值?例如,单元格A1可以具有值18,这是我想要在该等式中使用的值。如果A1中的值为10,则等式应为:
SolverAdd CellRef:="$M$10:$M$30", Relation:=2, FormulaText:="$N$10:$N$30"
同样,变量定义为:
SolverOk SetCell:="$H$47", MaxMinVal:=2, ValueOf:=0, ByChange:="$H$18:$J$30,$R$18:$R$30", _
Engine:=1, EngineDesc:="Simplex LP"
同样,当单元格A1中的数字值从18更改为10时,
变量应从"$H$18:$J$30,$R$18:$R$30"
更改为"$H$10:$J$30,$R$10:$R$30"
。
我将非常感谢任何建议。
非常感谢。
答案 0 :(得分:3)
input_variable = .Cells(1,1)
或input_variable = Range("A1")
并更改为"$M"&input_variable&":$M$30
有关更多方法,请参阅此问题:VBA: Selecting range by variables或Range as a Variable VBA
随着问题的增长,Excel似乎无法解决某些问题,还有许多其他专业软件使用这些优化建模语言。
如果您尝试安装可能会出现的一些问题,请输入此链接以解决:Help Page我的问题不同并已解决here。
在我的课程中,我是用AMPL教授的,因此使用SolverStudio进行编程比使用Excel VBA更容易,因为SolverStudio的语言专注于优化问题。