我正在编写在excel中使用求解器的VBA代码,以最大程度地减少参考值与通过公式预测的值之间的误差。但是,我想将方程式保留在VBA代码中,而不是将其添加为excel中的列。这是为了使用密码保护的宏来保护我的方程式。 代码如下:
单元格B2和C2是变量,求解器将对其进行更改以使其达到最小值。 F9和G9单元格是参考值。
Range("B2").Select
ActiveCell.FormulaR1C1 = "1"
Range("C2").Select
ActiveCell.FormulaR1C1 = "1"
SolverReset
SolverAdd CellRef:="$B$2", Relation:=3, FormulaText:="0.3"
SolverAdd CellRef:="$B$2", Relation:=1, FormulaText:="1.7"
SolverAdd CellRef:="$C$2", Relation:=3, FormulaText:="1"
SolverAdd CellRef:="$C$2", Relation:=1, FormulaText:="20"
value1 = 28.563041 - 0.6895786 * Range("B2").Value - 0.1685979 *
Range("C2").Value
value2 = 31.161328 - 0.1194945 * Range("B2").Value - 0.1156287 *
Range("C2").Value
error1 = (Range("$F$9").Value - value1 ) ^ 2
error2 = (Range("$G$9").Value - value2) ^ 2
error = error1 + error2
Range("J11").Value = error
SolverOk SetCell:="$J$11", MaxMinVal:=2, ValueOf:=0, ByChange:="$B$2:$C$2", _
Engine:=1, EngineDesc:="GRG Nonlinear"
SolverSolve
问题: 变量B2和C2的初始值为1,但在求解器优化过程中未更改。 我想知道如何在求解器循环中获取变量。