我有一个VBA代码似乎与PC一起运行良好,但是当我尝试在Mac上运行相同的代码时,它无法正常工作。代码设计为从指定列开始,在本例中为3.代码用于查找最小方差边界。下面是带有列和行参考的工作表示例。
Row Col3 Col4 Col5.....
26 WeightAssetA .3
27 WeightAssetB .3
28 WeightAssetC .2
29 WeightAssetD .2
30 Sum 1
31 Target Return .05
32 Variance
33
34 Expected Return
该代码旨在通过更改第26行到第29行来查找第32行的最小值。方法是第30行必须等于1(26:29的总和)并匹配目标返回值。以下是我目前的代码。当我运行时,它似乎循环遍历每列但在26列中只有包含最低方差的列才会更改为包含更新的安全权重。
有关为什么循环每列而不是使用正确的权重更新每列的任何建议,只有方差最小的列?谢谢!
Sub Optimizer()
'
' Frontier Macro
' Macro for Developing Portfolio Frontier
'
' Keyboard Shortcut: Ctrl+Shift+M
'
'
Dim col As Integer
For col = 3 To 29
SolverReset
SolverOptions AssumeNonNeg:=False
SolverOk SetCell:=Cells(32, col), MaxMinVal:=2, ByChange:=Range(Cells(26, col), Cells(29, col))
SolverAdd CellRef:=Cells(30, col), Relation:=2, FormulaText:="1"
SolverAdd CellRef:=Cells(31, col), Relation:=2, FormulaText:=Cells(31, col)
SolverSolve UserFinish:=True
Next col
End Sub