Проблемы с автоматическим решателем: проблемы с выбором данных относительно текущей активной ячейки - PullRequest
0 голосов
/ 12 июля 2020

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

Данные расположены следующим образом

W1 W2 W3 W4 W5 Sum Var

Код, который я пытаюсь реализовать, выглядит следующим образом.

Sub Macro1()

'Keyboard Shortcut: Ctrl+y

ThisWorkbook.Worksheets("Sheet8").Activate

SolverReset
SolverOk SetCell:="ActiveCell", MaxMinVal:=2, ValueOf:=0, ByChange:="ActiveCell.Offset(0,-6):ActiveCell.Offset(0,-2)", Engine:=1, EngineDesc:="GRG Nonlinear"
    
SolverAdd CellRef:="ActiveCell.Offset(0,-1)", Relation:=2, FormulaText:="1"
   
    
SolverAdd CellRef:="ActiveCell.Offset(0,-6):ActiveCell.Offset(0,-2)", Relation:=3, FormulaText:="0"

SolverSolve True
ActiveCell.Offset(5, 0).Select
End Sub

Код выполняется, однако он не изменяет веса и оставляет ранее вычисленную дисперсию без изменений. . Я также замечаю, что всякий раз, когда я запускаю код, excel меняет параметр «Formula Calculation Option» с Automati c на Manual. Это может быть причиной того, почему дисперсия или веса не меняются. Буду признателен за любую помощь.

PS Я также пробовал использовать Range

ByChange: = "ActiveCell.Offset (0, -6): ActiveCell.Offset (0, -2) "Однако для этой версии я получал ошибку времени выполнения 1004. Диапазон метода объекта -" Global "не удалось

Заранее большое спасибо

...