将 excel 中一行拆分到多行
例题描述和简单分析
有Excel文件Book1.xlsx,部分数据如下所示:
A |
B |
C |
D |
… |
W |
X |
|
1 |
名称 |
数量 |
重量1 |
重量2 |
… |
重量21 |
重量22 |
2 |
甲 |
21 |
26.3 |
22 |
… |
27.7 |
|
3 |
乙 |
22 |
29.6 |
28.9 |
… |
28.9 |
35.8 |
4 |
丙 |
15 |
30.9 |
26.4 |
… |
||
5 |
丁 |
15 |
28.8 |
23.8 |
… |
需要按每行10个重量拆分到多行,部分结果如下所示:
A |
B |
C |
D |
E |
… |
|
1 |
名称 |
数量 |
重量1 |
重量2 |
重量3 |
… |
2 |
甲 |
10 |
26.3 |
22 |
25 |
… |
3 |
甲 |
10 |
29.4 |
28.8 |
30.9 |
… |
4 |
甲 |
1 |
27.7 |
… |
||
5 |
乙 |
10 |
29.6 |
28.9 |
29.4 |
… |
6 |
乙 |
10 |
29.1 |
28.9 |
28.8 |
… |
… |
… |
… |
… |
… |
… |
… |
解法及简要说明
在集算器中编写脚本p1.dfx,如下所示:
A |
|
1 |
=file("Book1.xlsx").xlsimport@w(;,2).(~.select(~)) |
2 |
=A1.news(~.m(3:).group((#-1)\10);A1.~(1)|~.len()|~).(#1) |
3 |
["名称","数量",…,"重量10"] |
4 |
=file("result.xlsx").xlsexport@w([A3]|A2) |
简要说明:
A1 Excel从第二行开始读成序列的序列,过滤空值
A2 第三列开始的数据每10列分一组,在每列前并上“名称”和“数量”
A3 表头的串序列
A4 表头(A3)并数据(A2),导出至result.xlsx
https://club.excelhome.net/thread-1594162-1-2.html