Excel VBA解算器功能错误

时间:2014-02-19 03:34:36

标签: excel vba solver

我有一个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

0 个答案:

没有答案