将 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