多个工作表按新分类重新拆分并按指定顺序对齐

 

例题描述

Excel文件1.xlsx中有下图所示的数据,每个区域的数据构成一个SheetSheet编号为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