0

我正在尝试为宏的每次运行设置求解器,但它似乎忽略了一些约束,但由于某种原因并非全部。

SolverReset
SolverOk SetCell:="$N$15", MaxMinVal:=3, ValueOf:=0, ByChange:=Range("i3", Range("i3").End(xlDown)), _
Engine:=3, EngineDesc:="Evolutionary"
SolverAdd CellRef:=Range("k3", Range("k3").End(xlDown)), Relation:=1, FormulaText:="1"
SolverAdd CellRef:="$P$12:$P$13", Relation:=1, FormulaText:="$R$12:$R$13"
SolverAdd CellRef:="$P$12:$P$13", Relation:=3, FormulaText:="$N$12:$N$13"
SolverAdd CellRef:=Range("n3", Range("n3").End(xlDown)), Relation:=2, FormulaText:="1"
SolverAdd CellRef:=Range("i3", Range("i3").End(xlDown)), Relation:=5, FormulaText:="binary"
SolverSolve

它只是忽略范围 Range("n3", Range("n3").End(xlDown)) 和 Range("k3", Range("k3").End(xlDown)) 的约束

任何帮助,将不胜感激。

谢谢!

4

2 回答 2

1

来自 XL 帮助:

“Relation Required Integer。约束左右两边的算术关系。如果选择4 或 5,则 CellRef 必须引用可调整(变化)的单元格,不应指定 FormulaText。”

您的最后一个范围的关系 = 5,因此您不能包含 FormulaText。

于 2011-08-26T23:53:49.443 回答
0

我遇到了同样的问题,关系 = 5 的范围的 FormulaText 不是问题,但问题是 FormulaText="1"。每个具有 FormulaText="1" 的 SolverAdd 在求解器中都被忽略。我的解决方案是在一个单元格(例如 E9)中添加“1”并设置 FormulaText="$E$9"。可能有更好的解决方案,但这对我来说很好......

于 2014-07-11T22:32:25.177 回答