我正在Excel 2013中运行一个宏,该宏对30行的每行(每行一个帐户)使用Solver。
- B栏是我的帐户名
- C列为"总成本"
- E列为低成本员工数
- 列F是中等成本的员工数
- G列为高成本员工数
- H列为"每位员工的低成本"
- 第一栏为"每位员工的中等成本"
- J列为"每位员工的高成本"
- K列是(E:G,H:J)的总乘积
- 列L是列C和列K之间的差。在"解算器"中,这是通过更改列I和J的位置而设置为0的目标单元格
我有两个限制:
- I必须大于或等于J
- 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