Excel 每 N 列内容填成一行

Excel表格从第 2 列起,每 N 列为一组,以 N=2 为例:


A B C D E F G
1 ID Type 1 Count 1 Type 2 Count 2 Type 3 Count 3
2 1 a 640 d 290 a
3 2 d 12000 a 1900 f 6000
4 3 f 48000 f 3600 e 1600
5 4 c 46000 e 3100 b 1200
6 5 e 47000 c 3400 d 1400
7 6 b 64000 b 3600 c 1200

现在要进列转行:每行的每 2 列内容填成一行,即扩展成 3 行;第 1 列 ID 保留;新增第 2 列 No 是扩展出来的行号:


A B C D
1 ID No Type Count
2 1 1 a 640
3 1 2 d 290
4 1 3 a
5 2 1 d 12000
6 2 2 a 1900
7 2 3 f 6000
8 3 1 f 48000
9 3 2 f 3600
10 3 3 e 1600

使用 SPL XLL,输入公式:

=spl("=?.conj(ID=~(1),~.m(2:).group((#-1)\2).(ID|#|~))",A2:G7)

1111png

~.m(2:)从当前行的第2列开始取数据直到结尾,group函数将这些数据每2列分一组。

改成每 5 列一组,只要分组时把2改成 5


https://stackoverflow.com/questions/78449082/using-power-query-to-unpivot-table