将多个列重新排版成交叉表

 

例题描述

Excel文件book1.xlsx中有下图所示的数据:

..

现在想要把数据变换成如下图的形式:

..

此题涉及读取Excel数据、行列变换等知识。

 

实现步骤

1、  编写脚本:


A

1

=file("E:/work/book1.xlsx").xlsimport@w()

2

=create(type,姓名,flag)

3

=A1.to(2,).run(~.run( if(~!=null,A2.record([A1(1)(#),~   , ""]))))

4

=A2.pivot(姓名;type,flag)

5

=file("E:/work/book2.xlsx").xlsexport@t(A4)

A1   读取book1.xlsx文件中第一个Sheet数据,选项@w表示读成序列的序列,即每行数据构成一个序列,各行数据的序列再组成一个大序列。

A2   创建有type,姓名,flag三列的序表

A3   循环A1的第2行开始的各行,再循环各行数据序列,如果序列成员不为空,则将它对应的列名和它本身依次插入A2的序表中,flag都设为√

A4   A2以姓名为分组进行行转列,type的值为新的列名,flag为新的列值

A5   A4导出到book2.xlsx中,选项@t表示首行输出列标题

 

2、  运行程序,结束后就可以看到work目录中生成的book2.xlsx文件。

   

问答搜集  http://club.excelhome.net/thread-1569040-1-2.html

 

 

【附件】 cross.zip