在嵌套循环中使用一个最基本的函数

我正在与VBA合作,我非常喜欢新手。 我基本上有3列数据作为自variables(MSCI值,增长和小盘),然后是一个空白列,后面是包含基金数据(因variables)的许多列。 其中大部分具有相同的行数,但有一些不具备。

我期待在Excel中使用Linest函数分别产生每个基金的系数(β)与每个独立variables(MSCI增长,价值,小盘)。 我不确定什么是最好的方式来设置我的数据和VBA。 思想/想法将不胜感激。

目前我的想法是一个嵌套循环。 因此,我使用Linest函数将第一个自variables(MSCI增长,第2列)对第一个因variables(第6列)进行回归,并且该范围内的该列号每次增加,直到该列为空(不再有资金),当发生这种情况时,它会循环回到第一个基金,但会变成下一个自variables(MSCI值,第3列)。 重复这个过程,直到最后一个自variables(MSCI增长,第4列)相对于最后一个基金为止。

到目前为止,我的问题一直是1)使用命名范围创build一个最基本的函数2)创build一个表放置循环的结果。

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)))") 

也许我这样做是错误的,我想创build一个我可以在其他工作表上使用的全局macros,但是我不确定如何处理这个任务。

您需要从引号中删除vba部分并连接。

 ActiveSheet.Range("M21").value = ActiveSheet.Evaluate("Linest(" & gRange.Address(0,0) & ",G9:G112)")(1) 

第二个:

 With ActiveSheet .Range("M22").value = .Evaluate("Linest(" & .Range(.cells(9,2),.cells(112,2)).Address(0,0) & "," & .Range(.cells(9,7),.cells(112,7)).Address(0,0) & ")")(1) End With 

如果两个范围的大小不一样,这也会出错。 所以确保他们是。