Excel精英培训网

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

[已解决]多表汇总求和

[复制链接]
发表于 2015-3-17 13:27 | 显示全部楼层 |阅读模式
5学分
本帖最后由 jingshan 于 2015-3-17 13:31 编辑

就是从几个分表中提取姓名(同名不重复),到【汇总】表A列,然后B列根据A列对应的姓名求和。
最佳答案
2015-3-17 14:00
  1. Sub 汇总求和()
  2. Dim sh, ar, x, k, br(1 To 65500, 1 To 2), r
  3. Range("a4:c" & [a65000].End(3).Row).ClearContents
  4. Set d = CreateObject("scripting.dictionary")
  5.   For Each st In Sheets
  6.    If st.Name <> "汇总" Then
  7.     ar = st.Range("d4:h" & st.[d65500].End(3).Row)
  8.       For x = 1 To UBound(ar)
  9.         If d.exists(ar(x, 1)) Then
  10.             r = d(ar(x, 1))
  11.             br(r, 2) = br(r, 2) + ar(x, 5)
  12.           Else
  13.             k = k + 1: d(ar(x, 1)) = k
  14.             br(k, 1) = ar(x, 1)
  15.             br(k, 2) = ar(x, 5)
  16.         End If
  17.       Next
  18.     End If
  19.   Next
  20.   [a4].Resize(k, 2) = br
  21.   MsgBox "汇总完毕"
  22. End Sub
复制代码

多表汇总求和.zip

10.66 KB, 下载次数: 8

发表于 2015-3-17 14:00 | 显示全部楼层    本楼为最佳答案   
  1. Sub 汇总求和()
  2. Dim sh, ar, x, k, br(1 To 65500, 1 To 2), r
  3. Range("a4:c" & [a65000].End(3).Row).ClearContents
  4. Set d = CreateObject("scripting.dictionary")
  5.   For Each st In Sheets
  6.    If st.Name <> "汇总" Then
  7.     ar = st.Range("d4:h" & st.[d65500].End(3).Row)
  8.       For x = 1 To UBound(ar)
  9.         If d.exists(ar(x, 1)) Then
  10.             r = d(ar(x, 1))
  11.             br(r, 2) = br(r, 2) + ar(x, 5)
  12.           Else
  13.             k = k + 1: d(ar(x, 1)) = k
  14.             br(k, 1) = ar(x, 1)
  15.             br(k, 2) = ar(x, 5)
  16.         End If
  17.       Next
  18.     End If
  19.   Next
  20.   [a4].Resize(k, 2) = br
  21.   MsgBox "汇总完毕"
  22. End Sub
复制代码

多表汇总求和.rar

32.03 KB, 下载次数: 14

回复

使用道具 举报

 楼主| 发表于 2015-3-17 14:17 | 显示全部楼层
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-23 21:31 , Processed in 0.266765 second(s), 6 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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