第 1 列是分组列,之后是N个数据列。
A | B | C | D | |
1 | Z | N_1 | N_2 | Q_12 |
2 | A | 100 | 200 | -100 |
3 | A | 101 | -10 | -200 |
4 | A | 102 | 201 | -104 |
5 | A | 99 | 199 | 300 |
6 | B | 1000 | 1100 | 1300 |
7 | B | 1004 | 1200 | -900 |
8 | C | 2000 | -2100 | 2200 |
9 | C | 1900 | -2090 | -2180 |
现在要按第 1 列分组,每组横向的2N个列,依次是组内每个数据列的最大值和最小值。
A | B | C | D | E | F | G | |
1 | Z | N_1Max | N_1Min | N_2Max | N_2Min | Q_12Max | Q_12Min |
2 | A | 102 | 99 | 201 | -10 | 300 | -200 |
3 | B | 1004 | 1000 | 1200 | 1100 | 1300 | -900 |
4 | C | 2000 | 1900 | -2090 | -2100 | 2200 | -2180 |
使用 SPL XLL,输入公式:
=spl("=f=(d=E(?)).fname().m(2:),d.groups(Z;${f.( replace( ""max(*):*Max,min(*):*Min"", ""*"", ~ )).concat@c()})",A1:D9)
函数 fname 取表格的列名,groups 分组汇总,m(:2)表示取第 2 到最后一个成员,~ 表示当前成员,${} 表示把字符串当作动态代码去执行。