Цикл Solver Macro - PullRequest
       9

Цикл Solver Macro

0 голосов
/ 18 мая 2018

Я пытаюсь пробежаться по длинному списку строк, чтобы оптимизировать решение "с наименьшими затратами" в столбце J моей модели.
В столбцах C, D, E и F есть четыре переменные, которые запускаются изРяд 9 до 50 ряд и несколько ограничений.

Как правило, новичок в VBA, но исходный однострочный код решателя приведен ниже, и, по сути, необходимо продолжить повторение процесса, чтобы затем выполнить поиск для J10, изменив переменные C10 - F10, затем перейдя к строке 11 и т. Д.

Будем весьма благодарны за любые указатели для запуска в цикле!

Приветствия!

Sub Macro11()
SolverOk SetCell:="$J$9", MaxMinVal:=2, ValueOf:=0, ByChange:="$C$9:$F$9", _
    Engine:=1, EngineDesc:="GRG Nonlinear"
SolverAdd CellRef:="$C$9", Relation:=1, FormulaText:="23"
SolverAdd CellRef:="$D$9", Relation:=1, FormulaText:="23"
SolverOk SetCell:="$J$9", MaxMinVal:=2, ValueOf:=0, ByChange:="$C$9:$F$9", _
    Engine:=1, EngineDesc:="GRG Nonlinear"
SolverOk SetCell:="$J$9", MaxMinVal:=2, ValueOf:=0, ByChange:="$C$9:$F$9", _
    Engine:=1, EngineDesc:="GRG Nonlinear"
SolverSolve
SolverOk SetCell:="$J$9", MaxMinVal:=2, ValueOf:=0, ByChange:="$C$9:$F$9", _
        Engine:=1, EngineDesc:="GRG Nonlinear"

End Sub

1 Ответ

0 голосов
/ 18 мая 2018

Входные данные определяются строками, представляющими диапазоны, поэтому создайте строки диапазонов, объединив их с переменной цикла:

Sub Macro11()
    Dim iRow As Integer

    For iRow = 9 To 50
        SolverOk SetCell:="$J" & iRow, MaxMinVal:=2, ValueOf:=0, ByChange:="$C" & iRow & ":$F" & iRow, _
            Engine:=1, EngineDesc:="GRG Nonlinear"
        SolverAdd CellRef:="$C" & iRow, Relation:=1, FormulaText:="23"
        SolverAdd CellRef:="$D" & iRow, Relation:=1, FormulaText:="23"
        SolverOk SetCell:="$J" & iRow, MaxMinVal:=2, ValueOf:=0, ByChange:="$C" & iRow & ":$F" & iRow, _
            Engine:=1, EngineDesc:="GRG Nonlinear"
        SolverOk SetCell:="$J" & iRow, MaxMinVal:=2, ValueOf:=0, ByChange:="$C" & iRow & ":$F" & iRow, _
            Engine:=1, EngineDesc:="GRG Nonlinear"
        SolverSolve
        SolverOk SetCell:="$J" & iRow, MaxMinVal:=2, ValueOf:=0, ByChange:="$C" & iRow & ":$F" & iRow, _
                Engine:=1, EngineDesc:="GRG Nonlinear"
    Next iRow
End Sub
...