【问题标题】:VBA solver loopingVBA求解器循环
【发布时间】:2013-06-28 00:15:46
【问题描述】:

我试图让求解器在多行数据上重复。到目前为止,这是我的代码。我是这方面的新手,这适用于 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

【问题讨论】:

  • 这取决于你想如何循环,是循环一定次数还是直到某事为真?
  • 感谢您的回复。我只需要它来运行求解器并优化每一行,直到没有更多。每行是一组单独的数据。
  • @doctor,感谢您的代码建议。我已经运行了该程序,但没有得到预期的结果。目标是通过改变方程中的两个因子来最小化一系列数据集的总和或平方残差。每一行都是一组独立的数据,有自己的方程式。

标签: vba loops solver


【解决方案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(因子范围的宽度)。希望这会有所帮助。

【讨论】:

    猜你喜欢
    • 2016-01-04
    • 2013-03-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-08
    相关资源
    最近更新 更多