Excel VBA解算器function错误

我有一个VBA代码,似乎与PC,但当我尝试在Mac上运行相同的代码,它不能正常工作。 代码被devise为从指定的列开始,在这种情况下是3.代码用于find最小方差边界。 以下是带有列和行引用的工作表示例。

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 

代码被devise为通过改变行26到29来find行32的最小值。方差约束是行30必须等于1(总和为26:29)并匹配目标返回。 以下是我目前的代码。 当我运行它似乎是通过每列的循环,但26列只有包含最低方差的列被改变,以包括更新的安全权重。

任何build议,为什么它是通过每列循环,但没有更正每个列与正确的权重,只有一个具有最低方差? 谢谢!

 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