Excel 使用宏的求解器
Excel Solver using Macro
我有一个包含 300 行数据的 excel 文件,我需要在每一行中使用求解器。 K 列的每个单元格中都有一个方程式,通过更改单元格 H9 应等于零。
求解器:
- 目标单元格:K9(应等于“0”)
- 通过更改单元格:H9
- 输出单元格:H9
求解器应该从第 9 行到第 309 行工作。
我可以在互联网上找到很多类似的问题,但我无法根据我的情况修改编程代码。
*Sub Macro2()
' Macro2 Macro
'
Sneltoets: Ctrl+v
'
Dim c As Range
Dim nRows As Integral
nRows = 300
For Each c In Range("$H:$H9")
SolverOk SetCell:=c.Offset(0, 3), MaxMinVal:=3, ValueOf:=0, ByChange:=c.Address, _
Engine:=1, EngineDesc:=" GRG Nonlinear "
SolverSolve userfinish:=True
SolverFinish keepfinal:=1
Next
End Sub*
这是我第一次在 Excel 中编程。
如果有人能帮助我,我将不胜感激!
我尝试了下面的脚本,对我来说效果很好。您可能需要添加一两个小调整,以使其完全按照您的要求执行,但根据我对您的要求的理解,它应该非常接近您的需要。
Sub Macro2()
Dim c As Range
Dim nRows As Integer
Dim i As Integer
nRows = 300
i = 9
For Each c In Range("$H:$H9")
c.Select
SolverOk SetCell:=Range("H" & i), MaxMinVal:=3, ValueOf:=0, ByChange:=Range("K" & i), Engine:=1 _
, EngineDesc:="GRG Nonlinear"
SolverSolve True
i = i + 1
Next c
End Sub
我找到了这段代码并且有效:
Sub example()
Dim oRng As Range
Dim c As Range
Set oRng = Range("K9:K309")
For Each c In oRng
c.GoalSeek _
Goal:=0, _
ChangingCell:=c.Offset(0, -3)
Next c
End Sub
queens_living写的代码甚至做得更好
谢谢!
我有一个包含 300 行数据的 excel 文件,我需要在每一行中使用求解器。 K 列的每个单元格中都有一个方程式,通过更改单元格 H9 应等于零。
求解器:
- 目标单元格:K9(应等于“0”)
- 通过更改单元格:H9
- 输出单元格:H9
求解器应该从第 9 行到第 309 行工作。
我可以在互联网上找到很多类似的问题,但我无法根据我的情况修改编程代码。
*Sub Macro2()
' Macro2 Macro
'
Sneltoets: Ctrl+v
'
Dim c As Range
Dim nRows As Integral
nRows = 300
For Each c In Range("$H:$H9")
SolverOk SetCell:=c.Offset(0, 3), MaxMinVal:=3, ValueOf:=0, ByChange:=c.Address, _
Engine:=1, EngineDesc:=" GRG Nonlinear "
SolverSolve userfinish:=True
SolverFinish keepfinal:=1
Next
End Sub*
这是我第一次在 Excel 中编程。
如果有人能帮助我,我将不胜感激!
我尝试了下面的脚本,对我来说效果很好。您可能需要添加一两个小调整,以使其完全按照您的要求执行,但根据我对您的要求的理解,它应该非常接近您的需要。
Sub Macro2()
Dim c As Range
Dim nRows As Integer
Dim i As Integer
nRows = 300
i = 9
For Each c In Range("$H:$H9")
c.Select
SolverOk SetCell:=Range("H" & i), MaxMinVal:=3, ValueOf:=0, ByChange:=Range("K" & i), Engine:=1 _
, EngineDesc:="GRG Nonlinear"
SolverSolve True
i = i + 1
Next c
End Sub
我找到了这段代码并且有效:
Sub example()
Dim oRng As Range
Dim c As Range
Set oRng = Range("K9:K309")
For Each c In oRng
c.GoalSeek _
Goal:=0, _
ChangingCell:=c.Offset(0, -3)
Next c
End Sub
queens_living写的代码甚至做得更好
谢谢!