如何把单表中的格子抄到汇总表的合适位置
例题描述
某文件目录里有N组砂筒实验数据,每组数据存在一个Excel文件里,文件格式都相同,如下图所示:
筒号都是A开头,其后接自然数编号,换砂次数是自然数编号。现在需要把每个文件中的B4-B13以及D4-D13单元格数据汇总到实验总报告表report.xlsx中的对应位置,如下图所示:
实现步骤
1、 观察并发现规律
我们发现数据汇总时有这样的规律:
(1)、每个文件中的B列写入总文件的列号=砂筒编号*2+1,D列接着写入下一列
(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单元格的值依次写入row行col列开始的单元格
C8 将读出的D4-D13单元格的值依次写入row行col+1列开始的单元格
B9 将B7算出的平均值写入row+10行col列
C9 将C7算出的平均值写入row+10行col+1列
A10 将汇总后的总报告保存到report.xlsx文件
3、 按F9运行这段程序,可以看到d:/excel/report.xlsx文件已经生成了
【附件】report.zip