VBA中的解算器不添加整数约束
我使用VBA代码运行解算器。下面是我的代码。我希望单元格C87:K93是整数,但是,约束不会添加到解算器中,因此我得到的值都是小数。我可以知道如何更改代码,以便考虑整数约束吗VBA中的解算器不添加整数约束,vba,excel,integer,constraints,Vba,Excel,Integer,Constraints,我使用VBA代码运行解算器。下面是我的代码。我希望单元格C87:K93是整数,但是,约束不会添加到解算器中,因此我得到的值都是小数。我可以知道如何更改代码,以便考虑整数约束吗 Sub Solve() SolverReset SolverAdd CellRef:="$C$87:$K$93", Relation:=4, FormulaText:="integer" SolverAdd CellRef:="$C$87:$K$93", Relation:=1, FormulaText:
Sub Solve()
SolverReset
SolverAdd CellRef:="$C$87:$K$93", Relation:=4, FormulaText:="integer"
SolverAdd CellRef:="$C$87:$K$93", Relation:=1, FormulaText:="$C$48:$K$54"
SolverAdd CellRef:="$L$87:$L$93", Relation:=1, FormulaText:="$M$87:$M$93"
SolverAdd CellRef:="$C$87:$K$93", Relation:=3, FormulaText:="0"
SolverOk SetCell:="$N$95", MaxMinVal:=1, ValueOf:="0", ByChange:="$C$87:$K$93"
SolverSolve UserFinish:=True
End Sub
下面是运行代码后解算器图片的链接,整数约束不会出现
非常感谢您的帮助我最近遇到了同样的问题。即使在整数约束末尾没有
公式文本
这应该起作用:
Sub Solve()
SolverReset
SolverOk SetCell:="$N$95", MaxMinVal:=1, ValueOf:="0", ByChange:="$C$87:$K$93"
SolverAdd CellRef:="$C$87:$K$93", Relation:=4
SolverAdd CellRef:="$C$87:$K$93", Relation:=1, FormulaText:="$C$48:$K$54"
SolverAdd CellRef:="$L$87:$L$93", Relation:=1, FormulaText:="$M$87:$M$93"
SolverAdd CellRef:="$C$87:$K$93", Relation:=3, FormulaText:="0"
SolverSolve UserFinish:=True
End Sub
将整数约束(SolverAdd
)应用于不属于决策变量(ByChange
)的单元格时,解算器会提示:
“整数约束单元格引用必须仅包括可变单元格。”
在您的示例中,情况并非如此,但目标函数的设置仍然发挥着作用。我假设,如果在添加
SolverOk
之前添加整数约束,则解算器还不知道决策变量(ByChange
),因此不包括整数约束。尝试在没有VBA的情况下手动完成所有操作。看看约束是否消失。请记住,您可以有一个整数约束,甚至可以得到十进制结果。这就是解算器的工作方式。如果解算器无法获得整数解,它将尝试可能的解。这意味着没有整数解决方案,或者您的模型设计不正确。(这并不意味着约束将从定义中消失)我知道这已经有一段时间了,但是对于关系4、5和6,您不能有公式文本