Excel 每 N 列内容填成一行

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

ABCDEFG
1IDType 1Count 1Type 2Count 2Type 3Count 3
21a640d290a
32d12000a1900f6000
43f48000f3600e1600
54c46000e3100b1200
65e47000c3400d1400
76b64000b3600c1200

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

ABCD
1IDNoTypeCount
211a640
312d290
413a
521d12000
622a1900
723f6000
831f48000
932f3600
1033e1600

使用 SPL XLL,输入公式:

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

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

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

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