Excel如何为唯一测试系列创建动态LINEST计算数组?
动态生成多系列LINEST二次回归结果(Excel动态数组实现)
需求说明
有Table1表格,包含5列:
- A、B、C:测试系列组合变量
- D:x值(压力)
- E:y值(长度)
需要为每个唯一的A/B/C系列组合,计算二次回归的LINEST结果,提取m₂(x²系数)、m(x系数)、b(截距)、R²四个值。原单系列公式需手动下拉适配所有唯一行,希望通过BYROW+LAMBDA实现动态数组自动更新。
原公式
- 生成唯一系列组合(G1单元格):
G1=UNIQUE(Table1[A]:Table1[C]) - 单系列回归计算(原K1公式):
K1 =LET(a,Table1[A],b,Table1[B],c,Table1[C],d,Table1[D], e,Table1[E],x,FILTER(d,(a=G1)*(b=H1)*(c=I1)), y,FILTER(e,(a=G1)*(b=H1)*(c=I1)), l,LINEST(y,x^{1,2},,TRUE), HSTACK(INDEX(l,1,1),INDEX(l,1,2),INDEX(l,1,3),INDEX(l,3,1)))
示例表格
| A | B | C | D | E |
|---|---|---|---|---|
| a1 | b1 | c1 | 1500 | 0.040 |
| a1 | b1 | c1 | 2400 | 0.032 |
| a1 | b1 | c1 | 3750 | 0.024 |
| a1 | b1 | c1 | 5000 | 0.016 |
| a1 | b1 | c2 | 1500 | 0.032 |
| a1 | b1 | c2 | 2400 | 0.024 |
| a1 | b1 | c2 | 3750 | 0.020 |
| a1 | b1 | c2 | 5000 | 0.012 |
| a1 | b1 | c2 | 8000 | 0.004 |
| a1 | b2 | c1 | 2400 | 0.040 |
| a1 | b2 | c1 | 3750 | 0.032 |
| a1 | b2 | c1 | 6000 | 0.024 |
| a1 | b2 | c1 | 7500 | 0.016 |
| a1 | b2 | c2 | 2400 | 0.032 |
| a1 | b2 | c2 | 3750 | 0.024 |
| a1 | b2 | c2 | 6000 | 0.016 |
| a1 | b2 | c2 | 7500 | 0.008 |
| a2 | c3 | 1500 | 0.030 | |
| a2 | c3 | 2400 | 0.025 | |
| a2 | c3 | 3750 | 0.020 | |
| a2 | c3 | 5000 | 0.010 | |
| a2 | c4 | 1500 | 0.025 | |
| a2 | c4 | 2400 | 0.020 | |
| a2 | c4 | 3750 | 0.015 | |
| a2 | c4 | 5000 | 0.005 | |
| a3 | c5 | 0.014 | ||
| a3 | c6 | 0.020 | ||
| a3 | c7 | 0.024 | ||
| a3 | c8 | 0.032 |
动态数组解决方案
将K1公式替换为以下内容,即可自动遍历所有唯一系列并生成结果:
K1 =LET( unique_series, G1#, a, Table1[A], b, Table1[B], c, Table1[C], d, Table1[D], e, Table1[E], BYROW(unique_series, LAMBDA(row, LET( x, FILTER(d, (a=INDEX(row,1))*(b=INDEX(row,2))*(c=INDEX(row,3))), y, FILTER(e, (a=INDEX(row,1))*(b=INDEX(row,2))*(c=INDEX(row,3))), valid, COUNTA(x)>=3, result, IF(valid, LET(l, LINEST(y, x^{1,2},,TRUE), HSTACK(INDEX(l,1,1), INDEX(l,1,2), INDEX(l,1,3), INDEX(l,3,1)) ), HSTACK(NA(), NA(), NA(), NA()) ), result ) )) )
关键逻辑说明
BYROW遍历唯一系列:对G1#的每一行(每个A/B/C组合)执行回归计算INDEX(row,n)提取系列值:从当前行中分别取出A、B、C的值,用于筛选对应的数据- 有效性判断:二次回归至少需要3个有效x值,无数据时返回
NA()避免公式报错 - 动态输出:结果为二维数组,自动填充所有系列对应的行,无需手动下拉
内容的提问来源于stack exchange,提问作者Jacob Kopecky
相关产品推荐
相关产品推荐

