【问题标题】:Excel Solver VBAExcel求解器VBA
【发布时间】:2018-01-22 22:08:43
【问题描述】:

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

如果有任何建议,我将不胜感激。

非常感谢。

【问题讨论】:

  • 您是否尝试过使用 Add-on SolverStudio?它真的很有用。但是,如果您想要一个变量作为输入,请使用:input_variable = .Cells(1,1)input_variable = Range("A1") 并更改为 "$M"&input_variable&":$M$30
  • 太棒了!这行得通。谢谢丹尼尔。

标签: excel vba


【解决方案1】:
  • 要将变量作为输入,请使用: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 的语言专注于优化问题。

【讨论】:

  • 丹尼尔:太好了!我不知道 SolverStudio,所以我会检查一下。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多