VBA忽略Excel Solver

时间:2015-06-24 05:41:23

标签: excel vba excel-2013

我在Excel 2013中运行一个宏,它为每行使用Solver(每行一个帐户)30行。

  • B栏是我的帐户名。
  • C栏是"总费用"。
  • E栏是低成本的员工数量。
  • F列是中等成本的员工数量。
  • G栏是高成本的员工人数。
  • H列是"每位员工的低成本"。
  • 第I列是"每个员工的中等成本"。
  • J栏是"每位员工的高成本"。
  • K列是(E:G,H:J)的副产品。
  • 列L是列C和列K之间的差异。在求解器中,这是通过更改I和J所需的列来设置为0的目标单元格。

我有两个限制:

  1. 我必须大于或等于J.
  2. H必须大于或等于I.
  3. *注意H = C-sum(I,J)所以它不是一个独立的变量。

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

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

    *请注意,我尝试使用googling formulaText,但似乎我发现的只是将它等同于一个值。我不想要一个价值。我想要它引用一个单元格。但是我一直被忽略的代码。结果显示J大于I.我该如何解决这个问题?

    问题2.运行时我一直收到错误

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

    我不确定为什么会失败。是因为H指的是方程而不是空白单元格?如果是这样,有什么办法吗?

    谢谢。

1 个答案:

答案 0 :(得分:0)

你还有什么进一步的吗?

这似乎对我有用,虽然我在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