向当前问题添加一个约束。 等效于单击“数据分析 | ”组中的“规划求解”,然后在“规划求解参数”对话框中单击“添加”。
注意 默认情况下未启用规划求解加载项。 在可以使用此函数之前,必须已启用并安装规划求解加载项。 有关如何执行该操作的信息,请参阅使用规划求解 VBA 函数。 安装规划求解加载项之后,必须创建对该规划求解加载项的引用。 在 Visual Basic 编辑器中,如果模块处于活动状态,请单击“工具”菜单上的“引用”,然后在“可用的引用”下选择“规划求解”。 如果“规划求解”没有显示在“可使用的引用”下面,请单击“浏览”,然后打开 \Program Files\Microsoft Office\Office14\Library\SOLVER 子文件夹中的 Solver.xlam。
SolverAdd ( CellRef、 Relation、 FormulaText)
CellRef 必需 Variant。 对单元格或单元格区域的引用,该引用构成约束条件的左边部分。 Relation 必需 Integer。 约束左侧和右侧的算术关系。 如果选择 4、5 或 6, 则 CellRef 必须引用决策变量单元格,并且不应指定 FormulaText 。
| Relation | 算术关系 |
|---|---|
| 1 | <= |
| 2 | = |
| 3 | >= |
| 4 | CellRef 引用的单元格必须具有整数的最终值。 |
| 5 | CellRef 引用的单元格的最终值必须是 0 (零) 或 1。 |
| 6 | 由 CellRef 引用的单元格必须具有所有不同的和整数的最终值。 |
FormulaText 可选 Variant。 约束的右侧。
备注
添加约束后,可以使用 SolverChange 和 SolverDelete 函数作约束。
示例
本示例使用规划求解函数来最大化业务问题的毛利润。 SolverAdd 函数用于向当前问题添加三个约束条件。
Worksheets("Sheet1").Activate
SolverReset
SolverOptions precision:=0.001
SolverOK setCell:=Range("TotalProfit"), _
maxMinVal:=1, _
byChange:=Range("C4:E6")
SolverAdd cellRef:=Range("F4:F6"), _
relation:=1, _
formulaText:=100
SolverAdd cellRef:=Range("C4:E6"), _
relation:=3, _
formulaText:=0
SolverAdd cellRef:=Range("C4:E6"), _
relation:=4
SolverSolve userFinish:=False
SolverSave saveArea:=Range("A33")
支持和反馈
有关于 Office VBA 或本文档的疑问或反馈? 请参阅 Office VBA 支持和反馈,获取有关如何接收支持和提供反馈的指南。