Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 3703|回复: 16

[已解决]求助大神帮忙写一个VBA代码!!

[复制链接]
发表于 2017-6-2 17:22 | 显示全部楼层 |阅读模式
请大神帮忙写一个VBA代码将各月明细分别汇总到各个汇总表中!!谢谢!!
最佳答案
2017-6-6 15:11
做了一个应发工资的,其他的在此基础上稍微改一下即可。
  1. Sub 应发工资()
  2.     Set d = CreateObject("scripting.dictionary")
  3.     Set d1 = CreateObject("scripting.dictionary")
  4.     For k = 1 To 12
  5.         With Sheets(k & "月")
  6.             m = .[a1:z3].Find("姓名").Column
  7.             c = .[a1:z3].Find("应发工资").Column
  8.             r = .[a1:z3].Find("姓名").Row
  9.             arr = .[a1].CurrentRegion
  10.             For i = r + 1 To UBound(arr)
  11.                 x = arr(i, m)
  12.                 If x <> "" And x <> "合计" Then
  13.                     d1(x) = ""
  14.                     xx = .Name & x
  15.                     d(xx) = d(xx) + arr(i, c)
  16.                 End If
  17.             Next
  18.         End With
  19.     Next
  20.     With Sheets("应发数汇总")
  21.         .[a3:o10000] = ""
  22.         .[b3].Resize(d1.Count) = Application.Transpose(d1.keys)
  23.         arr = .[a1].CurrentRegion
  24.         For i = 3 To UBound(arr)
  25.             arr(i, 1) = i - 2
  26.             x = arr(i, 2): s = 0
  27.             For j = 3 To 14
  28.                 arr(i, j) = d(arr(2, j) & x)
  29.                 s = s + arr(i, j)
  30.             Next
  31.             arr(i, j) = s
  32.         Next
  33.         .[a1].CurrentRegion = arr
  34.     End With
  35. End Sub
复制代码

1-12月汇总.rar

221.5 KB, 下载次数: 17

excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2017-6-2 18:13 | 显示全部楼层
你每个月的表格格式好像都不一样
如果一样的话可能更好处理点
回复

使用道具 举报

 楼主| 发表于 2017-6-2 21:29 | 显示全部楼层
chart888 发表于 2017-6-2 18:13
你每个月的表格格式好像都不一样
如果一样的话可能更好处理点

但大致都差不多的!如果用公式有点麻烦,所以来求助高手帮忙写段代码!
回复

使用道具 举报

发表于 2017-6-5 08:58 | 显示全部楼层
差不多可不行,要一样,或者有规律可寻。才可以写vba
回复

使用道具 举报

 楼主| 发表于 2017-6-5 10:15 | 显示全部楼层
QCW911 发表于 2017-6-5 08:58
差不多可不行,要一样,或者有规律可寻。才可以写vba

老师,也就是每张表的列内容必须一样,如第一列姓名、第二列岗位工资、第三列薪级工资,都以这个顺序吗?
回复

使用道具 举报

发表于 2017-6-6 15:11 | 显示全部楼层    本楼为最佳答案   
做了一个应发工资的,其他的在此基础上稍微改一下即可。
  1. Sub 应发工资()
  2.     Set d = CreateObject("scripting.dictionary")
  3.     Set d1 = CreateObject("scripting.dictionary")
  4.     For k = 1 To 12
  5.         With Sheets(k & "月")
  6.             m = .[a1:z3].Find("姓名").Column
  7.             c = .[a1:z3].Find("应发工资").Column
  8.             r = .[a1:z3].Find("姓名").Row
  9.             arr = .[a1].CurrentRegion
  10.             For i = r + 1 To UBound(arr)
  11.                 x = arr(i, m)
  12.                 If x <> "" And x <> "合计" Then
  13.                     d1(x) = ""
  14.                     xx = .Name & x
  15.                     d(xx) = d(xx) + arr(i, c)
  16.                 End If
  17.             Next
  18.         End With
  19.     Next
  20.     With Sheets("应发数汇总")
  21.         .[a3:o10000] = ""
  22.         .[b3].Resize(d1.Count) = Application.Transpose(d1.keys)
  23.         arr = .[a1].CurrentRegion
  24.         For i = 3 To UBound(arr)
  25.             arr(i, 1) = i - 2
  26.             x = arr(i, 2): s = 0
  27.             For j = 3 To 14
  28.                 arr(i, j) = d(arr(2, j) & x)
  29.                 s = s + arr(i, j)
  30.             Next
  31.             arr(i, j) = s
  32.         Next
  33.         .[a1].CurrentRegion = arr
  34.     End With
  35. End Sub
复制代码

1-12月汇总.rar

241.98 KB, 下载次数: 18

评分

参与人数 3 +40 金币 +30 收起 理由
苏子龙 + 9 我和小伙伴都惊呆了
望帝春心 + 30 + 30 来学习~
guo_zhan11 + 1 赞一个

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2017-6-7 11:42 | 显示全部楼层
grf1973 发表于 2017-6-6 15:11
做了一个应发工资的,其他的在此基础上稍微改一下即可。

谢谢!!给我解决一个大问题!!
回复

使用道具 举报

 楼主| 发表于 2017-6-8 11:03 | 显示全部楼层
grf1973 发表于 2017-6-6 15:11
做了一个应发工资的,其他的在此基础上稍微改一下即可。

老师,你好,在绩效和养老保险汇总中分别有两栏统计,养老保险中有养老保险和职业年金,绩效中有基础绩效和奖励绩效,请问老师要怎样修改一下代码?
回复

使用道具 举报

发表于 2017-6-8 13:50 | 显示全部楼层
只要能看懂,自己就能改。
回复

使用道具 举报

 楼主| 发表于 2017-6-8 18:49 | 显示全部楼层
grf1973 发表于 2017-6-8 13:50
只要能看懂,自己就能改。

老师,我是小白!!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-4-26 06:17 , Processed in 0.199264 second(s), 15 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表