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)
=spl("=?.conj(ID=~(1),~.m(2:).group((#-1)\2).(ID|#|~))",A2:G7)
~.m(2:)从当前行的第2列开始取数据直到结尾,group函数将这些数据每2列分一组。
改成每 5 列一组,只要分组时把2改成 5。