VBA忽略Excel解算器中引用单元格的约束



我正在Excel 2013中运行一个宏,该宏对30行的每行(每行一个帐户)使用Solver。

  • B栏是我的帐户名
  • C列为"总成本"
  • E列为低成本员工数
  • 列F是中等成本的员工数
  • G列为高成本员工数
  • H列为"每位员工的低成本"
  • 第一栏为"每位员工的中等成本"
  • J列为"每位员工的高成本"
  • K列是(E:G,H:J)的总乘积
  • 列L是列C和列K之间的差。在"解算器"中,这是通过更改列I和J的位置而设置为0的目标单元格

我有两个限制:

  1. I必须大于或等于J
  2. H必须大于或等于I

*注意H=C sum(I,J),所以它不是一个自变量。

问题1。对于第一个约束:我的代码中有:

SolverAdd CellRef:=Range("I" & RowCount), _
        Relation:=3, _
        FormulaText:=Range("J" & RowCount)

*注意,我试着在谷歌上搜索formulaText,但我发现的似乎只是将其等同于一个值。我不想要价值。我希望它引用一个单元格。但我一直被忽视的代码。结果会显示J大于I。我该如何解决这个问题?

问题2。我在运行时不断出错

   SolverAdd CellRef:=Range("H" & RowCount), _
            Relation:=3, _
            FormulaText:=Range("I" & RowCount)

我不知道它为什么会失败。是因为H指的是一个方程式而不是一个空白单元格吗?如果是的话,有什么办法吗?

谢谢。

你对此有进一步的了解吗?

这似乎对我来说还可以,尽管我在H 中有一个硬编码的值

SolverReset
SolverOk SetCell:="$L$3", MaxMinVal:=3, ValueOf:=0, ByChange:="$I$3:$J$3", _
    Engine:=1, EngineDesc:="GRG Nonlinear"
SolverAdd CellRef:="$H$3", Relation:=3, FormulaText:="$I$3"
SolverAdd CellRef:="$I$3", Relation:=3, FormulaText:="$J$3"
SolverSolve

最新更新