2011-09-06 52 views
1

我想向我的Excel VBA求解器解決方案添加一些新的約束條件,並在運行代碼時出現一些奇怪的行爲。我想要做以下的最小化問題時遇到了一些麻煩:將VBA的約束條件添加到求解器工具

兩個槓桿正在調整必須< = 35%,但是當我添加的約束:

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

他們自動當他們的想法儘可能低時,將自己定在35%。如果沒有這個限制,單元格會將自己設置爲低於35%,以解決我正在驗證的問題,所以我知道最佳解決方案低於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 
+0

我也試圖消除 「」 周圍的FormulaText沒有效果。 – Andy

回答

2

參見:http://msdn.microsoft.com/en-us/library/aa272233(v=office.10).aspx

您使用的關係:= 2,這相當於 「=」。您應該使用1(< =)

至於讓您的解決方案到最接近的0.05,只是設置一些其他細胞飼料的「百分比」單元格,並將它們限制爲整數值。

如:

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

這樣的聲音應該可以工作。我們現在正在實施它,我們將會通知您。再次感謝蒂姆。 – Andy