使用 Excel INDIRECT 的矩阵计算
Matrix calculations using Excel INDIRECT
我想 运行 使用 LINEST
函数结合 INDIRECT
在 excel 中进行回归。我需要 select 日期之间的时间序列,并在 运行 回归之前将 Y
和 X
与索引相乘。
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 的日期。
我的想法是使用INDIRECT
来指定日期范围,乘以LINEST( INDIRECT(Y)*INDIRECT(Index),INDIRECT(X)*INDIRECT(Index),0,0)
但是我有一个错误。
感谢您的帮助
如果目标范围内的单元格总是连续的,试试...
H2,使用 CONTROL+SHIFT+ENTER 确认:
=SMALL(IF($A:$A>=F2,IF($A:$A<=G2,IF($D:$D=1,ROW($A:$A)))),1)
I2,使用 CONTROL+SHIFT+ENTER 确认:
=LARGE(IF($A:$A>=F2,IF($A:$A<=G2,IF($D:$D=1,ROW($A:$A)))),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:$B,SMALL(IF($A:$A>=F2,IF($A:$A<=G2,IF($D:$D=1,ROW($B:$B)-ROW($B)))),ROW(INDIRECT("1:"&SUM(IF($A:$A>=F2,IF($A:$A<=G2,IF($D:$D=1,1))))))),0,1)),N(OFFSET($C:$C,SMALL(IF($A:$A>=F2,IF($A:$A<=G2,IF($D:$D=1,ROW($C:$C)-ROW($C)))),ROW(INDIRECT("1:"&SUM(IF($A:$A>=F2,IF($A:$A<=G2,IF($D:$D=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:$A>=F2,IF($A:$A<=G2,IF($D:$D=1,ROW($A:$A)*{1,1}))))))),INDEX($C:$C,N(IF(1,MODE.MULT(IF($A:$A>=F2,IF($A:$A<=G2,IF($D:$D=1,ROW($A:$A)*{1,1}))))))),0,0)
希望对您有所帮助!
我想 运行 使用 LINEST
函数结合 INDIRECT
在 excel 中进行回归。我需要 select 日期之间的时间序列,并在 运行 回归之前将 Y
和 X
与索引相乘。
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 的日期。
我的想法是使用INDIRECT
来指定日期范围,乘以LINEST( INDIRECT(Y)*INDIRECT(Index),INDIRECT(X)*INDIRECT(Index),0,0)
但是我有一个错误。
感谢您的帮助
如果目标范围内的单元格总是连续的,试试...
H2,使用 CONTROL+SHIFT+ENTER 确认:
=SMALL(IF($A:$A>=F2,IF($A:$A<=G2,IF($D:$D=1,ROW($A:$A)))),1)
I2,使用 CONTROL+SHIFT+ENTER 确认:
=LARGE(IF($A:$A>=F2,IF($A:$A<=G2,IF($D:$D=1,ROW($A:$A)))),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:$B,SMALL(IF($A:$A>=F2,IF($A:$A<=G2,IF($D:$D=1,ROW($B:$B)-ROW($B)))),ROW(INDIRECT("1:"&SUM(IF($A:$A>=F2,IF($A:$A<=G2,IF($D:$D=1,1))))))),0,1)),N(OFFSET($C:$C,SMALL(IF($A:$A>=F2,IF($A:$A<=G2,IF($D:$D=1,ROW($C:$C)-ROW($C)))),ROW(INDIRECT("1:"&SUM(IF($A:$A>=F2,IF($A:$A<=G2,IF($D:$D=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:$A>=F2,IF($A:$A<=G2,IF($D:$D=1,ROW($A:$A)*{1,1}))))))),INDEX($C:$C,N(IF(1,MODE.MULT(IF($A:$A>=F2,IF($A:$A<=G2,IF($D:$D=1,ROW($A:$A)*{1,1}))))))),0,0)
希望对您有所帮助!