Я пытаюсь написать код VBA, который неоднократно решает целевую функцию (ячейки в столбце P) путем изменения (ячейки в столбце H). У меня есть следующие ограничения:Код VBA для решения повторно
Первое ограничение: 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
(заданное значение). По какой-то причине мой код отвечает значениям 0.53
в H3, где я ожидал найти значение, намного ближе к 0.93
. Кроме того, моя целевая функция вычисляется на основе физических отношений, в которых значение 0.53
находится ниже нижней границы.
Может ли кто-нибудь сказать мне, если код, который я использую, верен? Любая помощь приветствуется!
Получение ссылки ячейки информации решителю сложно. Существует ряд других проблем ... [см. Ответ на этот вопрос] (http://stackoverflow.com/questions/36671991/use-solver-in-vba-with-loop-in-rows/36682703) – OldUgly