如何将多个不定列的交叉表汇总成分类完全的交叉表

 

例题描述

Excel文件book1.xlsx中有下图所示的数据,共有4个表格,都是55列,2-4列第一行是数字,相当于是纵坐标;各表格第1列的2-4行也是数字,相当于是横坐标。

..

现在要对表中数据进行汇总,把相同坐标点的数值加起来,然后再把所有横纵坐标及对应的汇总值列出来,如下图所示:

..

此题涉及读取Excel中局部区域数据、分组汇总、行列转置等知识。

 

实现步骤

1、  编写脚本:


A

B

1

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


2

for 4

>r=(A2-1)\2*7+1

3


>c=(1-A2%2)*7+1

4


=to(c,c+4).("#"/~).concat(",")

5


=A1.xlsimport@t(${B4};1,r:r+4)

6


=B5.pivot@r(#1;y,value)

7


>B1=B1|B6

8

=B1.groups(#1,y;sum(value):value)


9

=A8.pivot(#1;y,value)


10

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


A1   定义book1.xlsx文件

A2   循环读取4张表格

B2   计算当前表格的起始行号r

B3   计算当前表格的起始列号c

B4   拼出当前表格所有列号串,如表2的串为#8,#9,#10,#11,#12

B5   book1.xlsx文件中读出r行到r+4行、B4所指定的列号中的数据,选项@t表示首行是列标题

B6   对读出的表格进行行列转置,选项@r表示是列转行,以第1列为分组,转换后的新列号命名为yvalue

B7   转置后的序表都合并保存到B1

A8   B1中的数据按第1列和y进行分组,计算组中value的总和命名为value

A9   A8中分组汇总的数据进行行列转置,以第1列为分组,y的值为新的列名,value值为新的列值

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

 

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

   

问答搜集  https://stackoverflow.com/questions/63803374/how-can-i-sum-a-series-of-matrices-based-on-the-values-in-the-first-row-and-colu

 

 

【附件】 mergecross.zip