热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

VBA如何多sheet数据按列值对齐合计

汇总某年12个月的员工绩效数据,按人汇总到Year表中,然后计算各Project的绩效总和,写入最后一行,相关的数据与汇总表

汇总某年 12 个月的员工绩效数据,按人汇总到 Year 表中,然后计算各 Project 的绩效总和,写入最后一行,相关的数据与汇总表如下:

下面为其中一个月的数据:

a100png


汇总表 Year,希望点按 SUM 按钮后就能自动计算。麻烦的是每页的人员次序和人数都不一定。

a101png

可以使用集算器, 完成对齐汇总后再被 VBA 调用。

集算器安装包可去 润乾网站 下载职场版,运行时需要一个授权,免费版本就够用。

我们将上述事例实现步骤:

1.    在集算器中编写脚本 sheets.dfx:

AB
1=file(arg1).xlsopen()/ 打开 Excel 文件
2=A1.xlsimport@t(;1,3:17).(Employee)/ 获取 year 下的用户列表
3=to(2,A1.len()).conj(A1.xlsimport@t(;~,2:15).select(A2.contain(Employee)))/ 合并 12 个月表数据
4=A3.groups(Employee; sum(#3):'Project   1',sum(#4):'Project 2',sum(#5):'Project 3',sum(#6):'Project 4')/ 按员工分组汇总绩效
5>A4.insert(0, "TOTAL",   A4.sum(#2),A4.sum(#3),A4.sum(#4),A4.sum(#5))/ 汇总各个 Project
6=A4.align@s(A2, Employee)/ 对齐处理
7>A1.xlsclose()/ 关闭文件
8return A6

 2.      调试运行一下,可看到 A1 格值:

A1stnamenrowsncols
year1002622
month_17856
month_26046

A3 格值:

A3_1EmployeeProject 1Project 2Project 3Project 4
(null)M2639387932932214
(null)K2721233511361115
(null)F2247209628931539

 3.      执行脚本返回结果:

A6EmployeeProject 1Project 2Project 3Project 4
A16595152621223415783
B16112173832024214323
C26194258243038431480
TOTAL285603273582282986283191

A3:to(2, A1.len()) 获取月数据 sheet 的序号,xlsimport() 将每个 sheet 的数据导入,合并数据后再过滤。
A4: 按员工分组,计算每个员工的绩效之和。
A5:将各个 Project 的汇总追加到序表。
A6:按用户列表顺序对齐。

3、加载插件 xll

在 Excel 下,若还没有加载集算器插件 ExcelRaq.xll,则需要加载它。ExcelRaq.xll 存放在集算器安装目录 raqsoft\esProc\bin 下。

在 Excel 中通过菜单的文件 --> 选项 --> 加载项 --> 转到 --> 浏览 --> 选择 ExcelRaq.xll 文件, 加载项中勾选 EsprocXll, 此时就启用了 ExcelRaq 插件了。

a102png

4、编写 VBA 脚本调用集算器代码

a103png

vba脚本函数为 merge(),其中 (nStart,nEnd) 为填充表格的开始位置 (3, 3),程序会自动计算要填充表格的大小,只需要设置初始位置即可。Application.Run() 中的参数分别是 SPL 接口函数 esproc, 要调用的 d:/app/sheets.dfx 脚本及 Excel 文件。

Sum按钮关联函数 merge(),点击按钮执行脚本,生成效果如下:

a104png


推荐阅读
author-avatar
aatwo19668035
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有