我可以使用间接创建数组吗?

时间:2019-02-03 02:33:45

标签: excel excel-formula

我有一些每周的股票收益数据,如下所示: enter image description here

很明显,我在那里藏了很多行。但基本上有200ish不同的股票和他们在10年的历程每周回报。它们与标准普尔500同期E列中的收益配对。我想使用这些Covariance(Stock, S&P 500)/Variance(S&P 500)计算beta。我正在努力创建现在的Covariance部分:

新工作表中的A列是所有股票代码的唯一列表,其公式如下:

=COVARIANCE.P(INDIRECT("'Weekly Data'!D$"&MATCH(A2,'Weekly Data'!F:F,0)&":'Weekly Data'!D$"&MATCH(A2,'Weekly Data'!G:G,0)),INDIRECT("'Weekly Data'!E$"&MATCH(A2,'Weekly Data'!F:F,0)&":'Weekly Data'!E$"&MATCH(A2,'Weekly Data'!G:G,0)))

遇到#REF错误。

1 个答案:

答案 0 :(得分:1)

您的串联

"'Weekly Data'!D$"&MATCH(A2,'Weekly Data'!F:F,0)&":'Weekly Data'!D$"&MATCH(A2,'Weekly Data'!G:G,0)

导致单元格范围地址的字符串表示错误。

对于ORCL,它会导致'Weekly Data'!D$2:'Weekly Data'!D$528。但是在Excel中,它必须是'Weekly Data'!D$2:D$528。请注意,工作表名称仅一次。

所以正确的公式应该是

=COVARIANCE.P(INDIRECT("'Weekly Data'!D$"&MATCH(A2,'Weekly Data'!F:F,0)&":D$"&MATCH(A2,'Weekly Data'!G:G,0)),INDIRECT("'Weekly Data'!E$"&MATCH(A2,'Weekly Data'!F:F,0)&":E$"&MATCH(A2,'Weekly Data'!G:G,0)))

但是INDIRECT经常可以用INDEX代替。这是一种更好的方法,因为INDIRECT的易变行为,不仅在函数表中的每个单元格变化时,而且在工作表的每次更改时都会重新计算。

INDEX的公式为:

=COVARIANCE.P(INDEX('Weekly Data'!$D:$D,MATCH(A2,'Weekly Data'!$F:$F,0)):INDEX('Weekly Data'!$D:$D,MATCH(A2,'Weekly Data'!$G:$G,0)),INDEX('Weekly Data'!$E:$E,MATCH(A2,'Weekly Data'!$F:$F,0)):INDEX('Weekly Data'!$E:$E,MATCH(A2,'Weekly Data'!$G:$G,0)))