【问题标题】:VBA code to solve repeatedlyVBA代码反复解决
【发布时间】:2016-04-26 11:59:43
【问题描述】:

我正在尝试编写 VBA 代码,该代码通过更改(H 列中的单元格)反复求解目标函数(P 列中的单元格)。在此我有以下限制:

第一个约束:H_i <= H_i-1, e.g. H3 <= H2 依此类推,直到最后一行。

第二个约束:L_i >= L_i-1, e.g. L3 >= L2 以此类推,直到最后一行。

到目前为止的代码:

Sub Solver_Balances()
'Automated solver to calculate the mass and heat balance
'at each time increment of 1 sec as given by the datalogger
'
Worksheets("Sheet1").Activate
RowCount = 2
Do While Not IsEmpty(Worksheets("Sheet1").Range("H" & RowCount))
    SolverReset
    SolverOk SetCell:=Range("P" & RowCount), MaxMinVal:=2, _
        ByChange:=Range("H" & RowCount), Engine:=1, _
        EngineDesc:="GRG Nonlinear"
    SolverAdd Cellref:=Range("H" & RowCount), _
        Relation:=1, _
        FormulaText:=Range("H" & RowCount - 1)
    SolverAdd Cellref:=Range("L" & RowCount), _
        Relation:=3, _
        FormulaText:=Range("L" & RowCount - 1)
    Solversolve userfinish:=True
    SolverFinish keepFinal:=1
    RowCount = RowCount + 1
Loop
End Sub

我在 H2 中的值是0.931(给定值)的起始值。出于某种原因,我的代码在 H3 中回复了 0.53 的值,我希望在其中找到更接近 0.93 的值。此外,我的目标函数是根据物理关系计算的,其中值0.53 低于下限。

谁能告诉我,我使用的代码是否正确?任何帮助表示赞赏!

【问题讨论】:

    标签: excel solver vba


    【解决方案1】:

    做了一些调整后,我设法解决了我的问题。

    代码如下:

    Sub Solver_Balances()
    'Automated solver to calculate the mass and heat balance
    'at each time increment of 1 sec as given by the datalogger
    '
    Worksheets("Sheet1").Activate
    RowCount = 2
    Do While Not IsEmpty(Worksheets("Sheet1").Range("H" & RowCount))
        SolverReset
        SolverOk SetCell:="P" & RowCount, MaxMinVal:=2, ValueOf:=0, _
            ByChange:="H" & RowCount, Engine:=1, _
            EngineDesc:="GRG Nonlinear"
        SolverAdd CellRef:="H" & RowCount, _
            Relation:=1, _
            FormulaText:="H" & RowCount - 1
        SolverAdd CellRef:="L" & RowCount, _
            Relation:=3, _
            FormulaText:="L" & RowCount - 1
        SolverSolve userfinish:=True
        SolverFinish keepFinal:=1
        RowCount = RowCount + 1
    Loop
    End Sub
    

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-28
    • 1970-01-01
    • 1970-01-01
    • 2023-02-05
    • 2012-08-31
    • 2015-05-15
    相关资源
    最近更新 更多