[英]How to get the slopes of different sets of data in excel, using the offset function?
我有一个数据集的结构,表示年份编号的 x 值从 1 到 18,但该数据集包含 500 多个从 1 到 18 的年份实例,每个实例的 y 值不同。
x_values y_values
1 0.10
2 0.20
3 0.25
. .
. .
. .
18 16.7
1 0.13
2 0.18
3 0.22
. .
. .
. .
18 17.1
这种模式重复超过 500 次。
我想使用斜率 function 计算每个实例的斜率。
在之前的场景中,我想找到每个实例的平均 y 值,我使用了以下公式:
=AVERAGE(OFFSET($B$2,(ROW()-ROW($C$2))*18,,18,))
其中 $B$2 是我的参考单元格,指示第一个实例中的第一个 y 值。
我想应用一个类似的公式来计算斜率,但到目前为止,当我使用这个公式时,我得到了一个 #N/A 错误:
=SLOPE(OFFSET($B$2,(ROW()-ROW($D$2))*18,,18,),$A$2:$A$19)
其中 $A$2:$A$19 范围代表 18 个 x 值。
任何有关为什么会发生此错误以及如何解决此错误的帮助将不胜感激。
如果您使用 Evaluate Formula 逐步执行此公式,您将看到行号周围有大括号 - 因此 Row 函数提供的是单元素数组。 您可以使用 Index 将它们变成标量:
=SLOPE(OFFSET($B$2,INDEX((ROW()-ROW($D$2))*18,1),0,18,1),$A$2:$A$19)
注1:
最好使用 Index 并避免使用 Offset 等易失函数:
=SLOPE(INDEX(B:B,(ROW()-ROW($B$2))*18+2):INDEX(B:B,(ROW()-ROW($B$2))*18+19),$A$2:$A$19)
笔记2:
我无法完全解释为什么使用 Slope 会出现这种行为,但 Average 是可以的。 似乎 Average 可以像这样处理 arrays 数组:
=SUMPRODUCT(AVERAGE(OFFSET(A2,{1,2},0,1,1)))
虽然 Slope 不能,但它仍然不能完全解释您在逐步执行公式时看到的内容。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.