有一些我想对使用求解器进行非线性回归的数据。这是我第一次使用vba(实际上是任何一种编程)。我已经尝试过尝试使用各种代码组合(从答案到问题),但是对于我一生来说,除了第一行之外,我无法让宏更改任何事情。
我的目标像元(K6),我的变量像元(N6)和约束(N6> = 0)每次都需要加一。 {例如,下一个值分别为K7,N7和N7> = 0。}我有356行数据。
这是我记录的宏,外加循环,求解器完成和求解器重置。我省略了所有无效的内容。如何获得三个部分(目标单元格,变量,约束)以抵消?
Sub solversolo()
For i = 0 To 356
'
' solversolo Macro
'
'
SolverReset
SolverOk SetCell:="$K$6", MaxMinVal:=2, ValueOf:=0, ByChange:="$N$6", Engine:=1 _
, EngineDesc:="GRG Nonlinear"
SolverAdd CellRef:="$N$6", Relation:=3, FormulaText:="0"
SolverOk SetCell:="$K$6", MaxMinVal:=2, ValueOf:=0, ByChange:="$N$6", Engine:=1 _
, EngineDesc:="GRG Nonlinear"
SolverOptions MaxTime:=0, Iterations:=100000, Precision:=0.000001, Convergence _
:=0.0001, StepThru:=False, Scaling:=True, AssumeNonNeg:=True, Derivatives:=1
SolverOptions PopulationSize:=400, RandomSeed:=0, MutationRate:=0.075, Multistart _
:=False, RequireBounds:=True, MaxSubproblems:=0, MaxIntegerSols:=0, _
IntTolerance:=1, SolveWithout:=False, MaxTimeNoImp:=30
SolverOk SetCell:="$K$6", MaxMinVal:=2, ValueOf:=0, ByChange:="$N$6", Engine:=1 _
, EngineDesc:="GRG Nonlinear"
SolverOk SetCell:="$K$6", MaxMinVal:=2, ValueOf:=0, ByChange:="$N$6", Engine:=1 _
, EngineDesc:="GRG Nonlinear"
SolverSolve userfinish:=True
solverfinish keepfinal:=1
Next i
End Sub
答案 0 :(得分:1)
我建议使用这种构造-例如:
SolverOk SetCell:="$K$6",
应该是这样
SolverOk SetCell:="$K$" & i,
但是您可能想从1而不是0开始循环...
或者您可以这样做:
SolverOk SetCell:="$K$" & 6 + i