如何把单表中的格子抄到汇总表的合适位置

 

例题描述

某文件目录里有N组砂筒实验数据,每组数据存在一个Excel文件里,文件格式都相同,如下图所示:

..

筒号都是A开头,其后接自然数编号,换砂次数是自然数编号。现在需要把每个文件中的B4-B13以及D4-D13单元格数据汇总到实验总报告表report.xlsx中的对应位置,如下图所示:

..

 

实现步骤

1、  观察并发现规律

我们发现数据汇总时有这样的规律:

(1)、每个文件中的B列写入总文件的列号=砂筒编号*2+1D列接着写入下一列

(2)、写入的起始行号=换砂次数*11+5

(3)、平均值的行号=起始行号+10

 

2、  运行集算器

可去润乾官网下载职场版,同时下载一个免费授权就够了,首次运行时会提示加载。

编写脚本:

..

 

把代码列出来看得清楚点:


A

B

C

1

=file("d:/excel/report.xlsx").xlsopen()

2

=directory("d:/excel/data/*.xlsx")

3

for A2

=file("d:/excel/data/"+A3).xlsopen()


4


=int(right(B3.xlscell("B1",1),-1))

=int(B3.xlscell("B2",1))

5


>row=(C4-1)*11+5

>col=B4*2+1

6


=B3.xlscell("B4":"B13",1)

=B3.xlscell("D4":"D13",1)

7


=B6.split("\n").(int(~)).avg()

=C6.split("\n").(int(~)).avg()

8


=A1.xlscell(cellname(row,col),1;B6)

=A1.xlscell(cellname(row,col+1),1;C6)

9


=A1.xlscell(cellname(row+10,col),1;string(B7))

=A1.xlscell(cellname(row+10,col+1),1;string(C7))

10

=file("d:/excel/report.xlsx").xlswrite(A1)

A1   打开总报告表

A2   列出原始数据目录中的所有数据文件名称

A3   循环所有数据文件

B3   打开循环中的当前文件

B4   读取砂筒编号,去掉首字母A并转成整数

C4   读取换砂次数并转成整数

B5   按发现的规律算出原文件中B4单元格应写入总报告的行号row

C5   按发现的规律算出原文件中B4单元格应写入总报告的列号col

B6   读出原文件中的B4-B13单元格的值,是用\n分隔的字符串

C6   读出原文件中的D4-D13单元格的值,是用\n分隔的字符串

B7   求出原文件中的B4-B13单元格的平均值

C7   求出原文件中的D4-D13单元格的平均值

B8   将读出的B4-B13单元格的值依次写入rowcol列开始的单元格

C8   将读出的D4-D13单元格的值依次写入rowcol+1列开始的单元格

B9   B7算出的平均值写入row+10col

C9   C7算出的平均值写入row+10col+1

A10   将汇总后的总报告保存到report.xlsx文件

 

3、  F9运行这段程序,可以看到d:/excel/report.xlsx文件已经生成了

..

 

 

【附件】report.zip