Зацикливание решателя VBA

Я пытаюсь заставить решатель повторять несколько строк данных. Вот мой код до сих пор. Я новичок в этом, и это делает это для 2 строк. Я хотел бы, чтобы он работал до последней строки. Я добавил в строку диапазона после прочтения ответов на похожие вопросы.

Sub prgopt()
'
' prgopt Macro
'

'
    SolverOk SetCell:="$C$2", MaxMinVal:=2, ValueOf:=0, ByChange:="$A$3:$B$3", _
        Engine:=1, EngineDesc:=" GRG Nonlinear "
    SolverSolve
    Range("$C$2").Offset(Count, 0).Select
    SolverOk SetCell:="$C$3", MaxMinVal:=2, ValueOf:=0, ByChange:="$A$3:$B$3", _
        Engine:=1, EngineDesc:=" GRG Nonlinear "
    SolverSolve
    End Sub

Спасибо за ваше время и спасибо за помощь C


person Charlie P    schedule 28.06.2013    source источник
comment
это зависит от того, как вы хотите зацикливаться, будет ли это определенное количество раз или пока что-то не станет правдой?   -  person T I    schedule 28.06.2013
comment
Благодарю за ваш ответ. Мне просто нужно запустить решатель и оптимизировать каждую строку, пока их не останется. Каждая строка представляет собой отдельную группу данных.   -  person Charlie P    schedule 28.06.2013
comment
@doctor, спасибо за предложение кода. Я запустил эту программу и не получил желаемых результатов. Цель состоит в том, чтобы минимизировать сумму или квадрат невязки ряда наборов данных путем замены двух факторов в уравнении. каждая строка представляет собой отдельный набор данных с собственным уравнением.   -  person Charlie P    schedule 28.06.2013


Ответы (1)


Попробуй это:

Sub prgopt()

'
' prgopt Macro
'

'

    Dim c As Range
    dim nRows as int
    nRows = 2
    For Each c In Range("$C$2:$C$3")
        SolverOk SetCell:=c.Address, MaxMinVal:=2, ValueOf:=0, ByChange:=c.Offset(0, -nRows).Resize(1, nRows), _
            Engine:=1, EngineDesc:=" GRG Nonlinear "
        SolverSolve userfinish:=True
        SolverFinish keepfinal:=1
    Next

    End Sub

При необходимости измените диапазон и nRows (ширину диапазона факторов). Надеюсь это поможет.

person Doctor Dan    schedule 28.06.2013