求解器 VBA,如何为每一行粘贴 "SolverSolve return value"
Solver VBA, how to paste "SolverSolve return value" for every row
我创建了以下宏,它循环遍历一组行,为每一行优化产品价格。
Sub OptimizePrice()
Dim i As Integer
ActiveWorkbook.ActiveSheet.Activate
For i = 5 To 20
SolverReset
SolverOk SetCell:="$K$" & i, MaxMinVal:=1, ByChange:="$B$" & i, Engine:=1
SolverAdd CellRef:="$B$" & i, Relation:=1, FormulaText:="$E$" & i
SolverAdd CellRef:="$F$" & i, Relation:=1, FormulaText:="$G$" & i
SolverSolve True
Range("$L$" & i)= SolverSolve Return Value
Next i
End Sub
求解器有时会找到最佳解决方案,有时却找不到。我希望我的宏为“L”列中的每一行粘贴,操作结果根据以下网页中提供的描述从 0 到 20:https://www.solver.com/excel-solver-solversolve-function.
我试图用这行代码实现这个'Range("$L$" & i)= SolverSolve Return Value',但它似乎不是获取返回值类型的正确方法。
感谢您的帮助!
更改此行:
Range("$L$" & i)= SolverSolve Return Value
变成这样的东西:
ws.Cells(i, "L").Value = SolverSolve
我还建议使用工作表的声明变量 (ActiveWorkbook.ActiveSheet.Activate
)
原因是,如果我们使用上面的行,我们希望确保代码在“正确”的工作表上运行。
Dim ws As Worksheet
Set ws = ActiveWorkbook.Worksheets("Sheet1")
ws.activate 'Should be avoided but can be nice for now, since you might avoid to rewrite some code.
我创建了以下宏,它循环遍历一组行,为每一行优化产品价格。
Sub OptimizePrice()
Dim i As Integer
ActiveWorkbook.ActiveSheet.Activate
For i = 5 To 20
SolverReset
SolverOk SetCell:="$K$" & i, MaxMinVal:=1, ByChange:="$B$" & i, Engine:=1
SolverAdd CellRef:="$B$" & i, Relation:=1, FormulaText:="$E$" & i
SolverAdd CellRef:="$F$" & i, Relation:=1, FormulaText:="$G$" & i
SolverSolve True
Range("$L$" & i)= SolverSolve Return Value
Next i
End Sub
求解器有时会找到最佳解决方案,有时却找不到。我希望我的宏为“L”列中的每一行粘贴,操作结果根据以下网页中提供的描述从 0 到 20:https://www.solver.com/excel-solver-solversolve-function.
我试图用这行代码实现这个'Range("$L$" & i)= SolverSolve Return Value',但它似乎不是获取返回值类型的正确方法。
感谢您的帮助!
更改此行:
Range("$L$" & i)= SolverSolve Return Value
变成这样的东西:
ws.Cells(i, "L").Value = SolverSolve
我还建议使用工作表的声明变量 (ActiveWorkbook.ActiveSheet.Activate
)
原因是,如果我们使用上面的行,我们希望确保代码在“正确”的工作表上运行。
Dim ws As Worksheet
Set ws = ActiveWorkbook.Worksheets("Sheet1")
ws.activate 'Should be avoided but can be nice for now, since you might avoid to rewrite some code.