首页 > 解决方案 > Excel 2016 VBA 求解器约束

问题描述

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

恢复:
目标单元(要最小化):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 .... 也许它没有“看到”小数点分隔符。任何想法?在此处输入图像描述

感谢您的时间。

标签: vbaexcelexcel-2016

解决方案


推荐阅读