我正在尝试使用求解器编写循环。
Sub SharpeRatio()
SolverReset
SolverOk SetCell:="$Q$18", MaxMinVal:=1, ValueOf:="0", ByChange:="$L$18,$M$18", Engine:=1, EngineDesc:="GRG Nonlinear"
SolverAdd CellRef:="$L$18", Relation:=3, FormulaText:="0"
SolverAdd CellRef:="$L$18", Relation:=1, FormulaText:="1"
SolverAdd CellRef:="$M$18", Relation:=3, FormulaText:="0"
SolverAdd CellRef:="$M$18", Relation:=1, FormulaText:="1"
SolverAdd CellRef:="$R$18", Relation:=2, FormulaText:="1"
SolverSolve UserFinish:=True
End Sub
求解器代码有效。我需要优化列Q中的所有单元格,同时使用每个相应行中的值的约束。我需要为第14行至第2843行执行此操作。
我似乎无法进入正确的循环。我该怎么改写这个?
答案 0 :(得分:0)
我会将"$Letter$18"
更改为"$Letter" + i
的某些内容,然后将代码包含在for循环中。
for i = 14 to 2843
SolverReset
SolverOk SetCell:="$Q"+i, MaxMinVal:=1, ValueOf:="0", ByChange:="$L"+i,"$M"+i, Engine:=1, EngineDesc:="GRG Nonlinear"
SolverAdd CellRef:="$L"+i, Relation:=3, FormulaText:="0"
SolverAdd CellRef:="$L"+i, Relation:=1, FormulaText:="1"
SolverAdd CellRef:="$M"+i, Relation:=3, FormulaText:="0"
SolverAdd CellRef:="$M"+i, Relation:=1, FormulaText:="1"
SolverAdd CellRef:="$R"+i, Relation:=2, FormulaText:="1"
SolverSolve UserFinish:=True
Next
这些方面应该有所作为