使用Excel INDIRECT进行matrix计算

我想使用LINEST函数结合INDIRECT在Excel中运行回归。 我需要selectdate之间的时间序列,并在运行回归之前将YX与索引相乘。

 Date | Y | X | Index 30/06/1990 1.21 2.20 - 30/09/1990 0.73 1.33 - 31/12/1990 -0.07 1.31 - 31/03/1991 1.64 0.80 1.00 30/06/1991 -0.14 0.61 1.00 30/09/1991 4.13 2.37 1.00 31/12/1991 0.71 0.78 1.00 31/03/1992 0.95 0.78 - 30/06/1992 1.61 0.78 - 

通过使用上面的数据,我需要使用从31/03/1991直到30/06/1992的LINEST函数,但是只有在索引是1的date。

我的想法是使用INDIRECT指定date范围,乘以LINEST( INDIRECT(Y)*INDIRECT(Index),INDIRECT(X)*INDIRECT(Index),0,0)但是我有一个错误。

感谢您的帮助

如果目标范围内的单元格将始终连续,请尝试…

H2,用CONTROL + SHIFT + ENTER确认:

 =SMALL(IF($A$2:$A$10>=F2,IF($A$2:$A$10<=G2,IF($D$2:$D$10=1,ROW($A$2:$A$10)))),1) 

I2,用CONTROL + SHIFT + ENTER确认:

 =LARGE(IF($A$2:$A$10>=F2,IF($A$2:$A$10<=G2,IF($D$2:$D$10=1,ROW($A$2:$A$10)))),1) 

J2,用ENTER键确认:

 =LINEST(INDEX($B:$B,H2):INDEX($B:$B,I2),INDEX($C:$C,H2):INDEX($C:$C,I2),0,0) 

在这里输入图像说明

否则,请尝试以下内容…

H2,用CONTROL + SHIFT + ENTER确认:

 =LINEST(N(OFFSET($B$2:$B$10,SMALL(IF($A$2:$A$10>=F2,IF($A$2:$A$10<=G2,IF($D$2:$D$10=1,ROW($B$2:$B$10)-ROW($B$2)))),ROW(INDIRECT("1:"&SUM(IF($A$2:$A$10>=F2,IF($A$2:$A$10<=G2,IF($D$2:$D$10=1,1))))))),0,1)),N(OFFSET($C$2:$C$10,SMALL(IF($A$2:$A$10>=F2,IF($A$2:$A$10<=G2,IF($D$2:$D$10=1,ROW($C$2:$C$10)-ROW($C$2)))),ROW(INDIRECT("1:"&SUM(IF($A$2:$A$10>=F2,IF($A$2:$A$10<=G2,IF($D$2:$D$10=1,1))))))),0,1)),0,0) 

在这里输入图像说明

但是,对于Excel 2010和更高版本,可以使用MODE.MULT来代替…

H2,用CONTROL + SHIFT + ENTER确认:

 =LINEST(INDEX($B:$B,N(IF(1,MODE.MULT(IF($A$2:$A$10>=F2,IF($A$2:$A$10<=G2,IF($D$2:$D$10=1,ROW($A$2:$A$10)*{1,1}))))))),INDEX($C:$C,N(IF(1,MODE.MULT(IF($A$2:$A$10>=F2,IF($A$2:$A$10<=G2,IF($D$2:$D$10=1,ROW($A$2:$A$10)*{1,1}))))))),0,0) 

希望这可以帮助!