循环与解算器

时间:2014-04-30 22:50:52

标签: excel vba loops excel-vba solver

我正在尝试使用求解器编写循环。

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行执行此操作。

我似乎无法进入正确的循环。我该怎么改写这个?

1 个答案:

答案 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

这些方面应该有所作为