Excel Solver VBA

时间:2017-08-15 01:16:56

标签: excel-vba vba excel

我在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"

我将非常感谢任何建议。

非常感谢。

1 个答案:

答案 0 :(得分:3)

  • 要将变量作为输入,请使用此input_variable = .Cells(1,1)input_variable = Range("A1")并更改为"$M"&input_variable&":$M$30

有关更多方法,请参阅此问题:VBA: Selecting range by variablesRange as a Variable VBA

  • 另一种选择是使用SolverStudio,它非常有用,因为您使用几乎所有着名的验证库在Excel中建模。

随着问题的增长,Excel似乎无法解决某些问题,还有许多其他专业软件使用这些优化建模语言。

如果您尝试安装可能会出现的一些问题,请输入此链接以解决:Help Page我的问题不同并已解决here

在我的课程中,我是用AMPL教授的,因此使用SolverStudio进行编程比使用Excel VBA更容易,因为SolverStudio的语言专注于优化问题。