Excel 2016 VBA求解器约束

时间:2018-08-27 10:00:38

标签: excel vba excel-vba excel-2016

我正在尝试对一列值运行自动求解器。目标,参考和约束单元格都在同一行中,并且在整个列中运行求解程序时,它们随目标单元格向下移动。在要求保持第三个单元格(取决于参考单元格值)大于或等于第四个单元格的约束下,必须通过更改同一行上的参考单元格来最小化目标单元格。所有单元格都不包含整数,所有单元格都包含十进制值。

要恢复:
目标细胞(要最小化):P13
参考电池(更换电池):L13
约束(其中M13取决于L13):M13> = F13

全部向下移到8795行,相应地移动前面提到的所有单元格。

求解器可以很好地手动逐行运行,但是为了避免8762迭代而尝试使其自动化,它不考虑约束。我试图删除“”,添加SolverReset并将约束放在指令的顶部,但没有任何效果。代码是:

    Private Sub CommandButton1_Click()

Dim count As Integer
count = 13
Do While count <= 8795

    SolverOk SetCell:=Cells(count, 16), MaxMinVal:=2, ByChange:=Cells(count, 12)
    SolverAdd CellRef:=Cells(count, 13), Relation:=3, FormulaText:=Cells(count, 6)

    SolverSolve userfinish:=True

    count = count + 1
Loop
End Sub

我正在尝试更改约束,并且我已经注意到错误的可能所在:运行代码后,如果我打开求解器,则可以看到代码使用的最后一个约束。如下图所示,我尝试设置一个新的约束L13 <= H13,其中H13 = 9,272,但求解器有9272190 ....也许不是“看到”小数点分隔符。任何想法? enter image description here

谢谢您的时间。

0 个答案:

没有答案