【发布时间】:2017-06-29 06:58:05
【问题描述】:
我正在使用 VBA,而且我还是个新手。我基本上有 3 列数据作为自变量(MSCI 价值、增长和小型股),然后是一个空白列,然后是包含基金数据(因变量)的许多列。其中大多数具有相同的行数,但少数没有。
我希望在 excel 中使用 Linest 函数来分别生成每个基金的系数 (beta) 以及每个独立变量(MSCI 增长、价值、小盘股)。我不确定设置数据和 vba 的最佳方式是什么。想法/想法将不胜感激。
目前我的想法是一个嵌套循环。因此,我使用 Linest 函数将第一个自变量(MSCI 增长,第 2 列)与第一个因变量(第 6 列)进行回归,并且该范围中的该列号每次都会递增,直到该列为空白(没有更多的资金),当这种情况发生时,它会循环回到第一个基金,但会更改为下一个自变量(MSCI 值,第 3 列)。重复此过程,直到最后一个自变量(MSCI 增长,第 4 列)相对于最后一个基金进行回归。
到目前为止,我的问题是 1) 使用命名范围创建 Linest 函数 2) 创建一个放置循环结果的表格。
Set StartCell = Range("B9")
LastRow = Cells(Rows.Count, 1).End(xlUp).Row
Set gRange = Range(StartCell, Cells(LastRow, 2)) 'MSCI growth range
Range("M21").value = Evaluate("Linest(gRange,G9:G112)") 'column G contains the first fund.
这段代码没有运行,我觉得和数组公式有关,我只需要系数所以不需要运行整个数组。
我尝试使用单元格引用,但是当我运行代码时,我得到了#VALUE
Range("M22").value = Evaluate("Linest(Range((cells(9,2):cells(112,2)),Range(cells(9,7):cells(112,7)))")
也许我做错了,我想创建一个可以在其他工作表上使用的全局宏,但我不确定如何完成这项任务。
【问题讨论】: