多个工作表按新分类重新拆分并按指定顺序对齐
例题描述
Excel文件1.xlsx中有下图所示的数据,每个区域的数据构成一个Sheet,Sheet编号为a-z。
现在想要把数据变换成如下图的形式,按系统分组,每个系统数据构成一个Sheet,并且没有数据的区域也要列出来。
此题涉及读取Excell中多Sheet数据、数据分组、数据导出到Excel的多个Sheet、数据补齐等知识。
实现步骤
1、 编写脚本:
A |
B |
|
1 |
=file("E:/work/1.xlsx").xlsopen() |
|
2 |
for A1 |
>B1=B1|A1.xlsimport@t(;A2.stname) |
3 |
=B1.group(系统) |
=26.(char(~+96)) |
4 |
for A3 |
=A4.align(B3,区域) |
5 |
=B4.new(B4.max(系统):系统,B3(#):区域,日期) |
|
6 |
=file("E:/work/2.xlsx").xlsexport@ta(B5;string(B5(1).系统)) |
A1 打开1.xlsx文件为Excel对象
A2 循环A1中的各个Sheet
B2 读了取各Sheet的数据合并到B1中,选项@t表示首行是列标题
A3 对读取到B1的数据按系统分组
B3 用a-z按顺序组成26个字母序列
A4 循环每个系统分组
B4 把当前组数据的区域字段按照B3中字母a-z的顺序对齐
B5 用B4重新构造一个数据集,用B4中的最大系统值为新的系统值,B3中的当前行号字母为区域字段值,取原日期值为新的日期字段值
B6 把B5导出到2.xlsx中,用系统字段值为Sheet名称,选项@t表示首行输出列标题,a表示追加写入Sheet
2、 运行程序,结束后就可以看到work目录中生成的2.xlsx文件。
问答搜集 http://club.excelhome.net/thread-1568188-1-1.html
【附件】 regroup.zip