将VBA约束添加到解算器工具

我正在尝试向我的Excel VBA求解器解决scheme中添加一些新的约束条件,并在运行代码时遇到一些奇怪的现象。 我想做一个最小化问题以下有麻烦:

正在调整的两个杠杆必须<= 35%,但是当我添加约束:

SolverAdd CellRef:="$C$39", Relation:=2, FormulaText:=".35" SolverAdd CellRef:="$C$40", Relation:=2, FormulaText:=".35" 

当想法尽可能低时,他们自动将自己定在35%。 如果没有这个约束,单元格会将自己设置为低于35%,因为我正在validation的问题,所以我知道最佳解决scheme是低于35%。

此外,我想知道是否有一种方法来确保a)单元格以5%的增量进行优化,并且结尾值不包括小数。 即10.00%而不是10.23%

对不起,这个冗长的问题,我很感激我得到的任何帮助。

以下是完整的代码:

  Private Sub CommandButton2_Click() Dim i As Integer i = 2 For i = 2 To 5 Range("$C$14").Value = Application.Workbooks("test_model_2.xls").Worksheets("All Models").Cells(i, 2).Value SolverReset SolverAdd CellRef:="$F$70", Relation:=3, FormulaText:="5000" SolverAdd CellRef:="$C$39", Relation:=2, FormulaText:=".35" SolverAdd CellRef:="$C$40", Relation:=2, FormulaText:=".35" SolverOk SetCell:="$F$70", MaxMinVal:=2, ValueOf:="0", ByChange:="$C$39:$C$40" SolverSolve True MsgBox "i is:" & i Next i End Sub 

请参阅: http : //msdn.microsoft.com/en-us/library/aa272233(v=office.10).aspx

你正在使用relation:= 2,这等于“=”。 你应该使用1(<=)

至于让你的解决scheme到最接近的0.05,只是设置一些其他细胞饲料的“百分比”单元格,并将它们限制为整数值。

例如:

 A1 = 7 (set solver to change this, and constrain to integer) B1 = A1 * 0.05 (your percent cell, constrain to <=0.35)