Солвер не может l oop над строками со связанными формулами? - PullRequest
0 голосов
/ 19 февраля 2020

У меня есть электронная таблица, которая содержит несколько столбцов / строк. Я пытаюсь применить Солвер для определенных строк в столбце.

У меня установлены формулы в столбце 22, я определил начальные значения, которые должны быть решены Солвером в столбце 24, и я хочу сопоставить значение в столбце 10 для каждой строки.

До сих пор я разработал этот код:

Sub SolverLoop()
Dim i As Long

For i = 4 To 10

    SolverReset
    SolverOk SetCell:=Cells(i, 22).Address, MaxMinVal:=3, ValueOf:=Cells(i, 10).Address, ByChange:=Cells(i, 24).Address, Engine:=1, EngineDesc:="GRG Nonlinear"
    SolverSolve Userfinish:=True

Next

End Sub

Но это не влияет на столбец 24, который я ожидаю изменить. Чего мне не хватает?

Формула в столбце 22 - =R123C12*NORMSDIST(RC[-2])-RC[-10]*EXP(-R16C2)*NORMSDIST(RC[-1]). Впоследствии в 20 и 21 =(LN(R123C12/RC[-8])+(R15C2+RC[4]^2/2)*R14C2)/(RC[4]*SQRT(R14C2)) и =RC[-1]-RC[3]*SQRT(R14C2), соответственно.

1 Ответ

0 голосов
/ 20 февраля 2020
Sub SolverLoop()
Dim i As Long

For i = 4 To 10

    SolverReset
    SolverOk SetCell:=Cells(i, 22), MaxMinVal:=3, ValueOf:=Cells(i, 10).Value, ByChange:=Cells(i, 25), Engine:=1, EngineDesc:="GRG Nonlinear"
    SolverSolve Userfinish:=True

Next

End Sub

Похоже, я просто пропустил .Value часть для ValueOf:=Cells(i, 10).Value.

...