Excel精英培训网

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

[已解决]匹配汇总

[复制链接]
发表于 2016-12-10 20:55 | 显示全部楼层 |阅读模式
本帖最后由 乐乐2006201506 于 2016-12-11 09:40 编辑

附件已上传,汇总表中的姓名所对应的数据,需要从其他几个工作簿中查到,并累计统计,姓名没有的忽略。谢谢各位大师了。

在同一文件夹,用汇总工作簿,遍历搜索并统计其他每个工作簿中(表格结构相同,每簿中不一定都有某人信息,且每簿中某人所在位置是变化的,每簿中人员数量也是变化的)某人所有信息某项的和(本例中统计数据列的值)。望各位大师能够及时帮忙,谢谢啦!
最佳答案
2016-12-11 08:50
  1. Sub YuBa()
  2.     Dim d As Object, arr(1), i&, j&
  3.     Dim wk, th, fl
  4.     Application.ScreenUpdating = False
  5.     Set d = CreateObject("scripting.dictionary")
  6.     th = ThisWorkbook.Path & ""
  7.     arr(0) = Sheets(1).UsedRange
  8.     For i = 2 To UBound(arr(0))
  9.         d(arr(0)(i, 2)) = 0
  10.     Next
  11.     fl = Dir(th & "*.xlsx")
  12.     Do While fl <> ""
  13.         If fl <> ThisWorkbook.Name Then
  14.             Set wb = Workbooks.Open(th & fl)
  15.             arr(1) = Sheets(1).UsedRange
  16.             wb.Close
  17.             For i = 2 To UBound(arr(1))
  18.                 If d.exists(arr(1)(i, 2)) Then
  19.                     d(arr(1)(i, 2)) = d(arr(1)(i, 2)) + arr(1)(i, 3)
  20.                 End If
  21.             Next
  22.         End If
  23.         fl = Dir
  24.     Loop
  25.     [c4].Resize(d.Count) = Application.Transpose(d.items)
  26.     Application.ScreenUpdating = True
  27. End Sub
复制代码


查找匹配求和.rar (59.71 KB, 下载次数: 13)

查找匹配求和.zip

50.47 KB, 下载次数: 3

发表于 2016-12-11 08:50 | 显示全部楼层    本楼为最佳答案   
  1. Sub YuBa()
  2.     Dim d As Object, arr(1), i&, j&
  3.     Dim wk, th, fl
  4.     Application.ScreenUpdating = False
  5.     Set d = CreateObject("scripting.dictionary")
  6.     th = ThisWorkbook.Path & ""
  7.     arr(0) = Sheets(1).UsedRange
  8.     For i = 2 To UBound(arr(0))
  9.         d(arr(0)(i, 2)) = 0
  10.     Next
  11.     fl = Dir(th & "*.xlsx")
  12.     Do While fl <> ""
  13.         If fl <> ThisWorkbook.Name Then
  14.             Set wb = Workbooks.Open(th & fl)
  15.             arr(1) = Sheets(1).UsedRange
  16.             wb.Close
  17.             For i = 2 To UBound(arr(1))
  18.                 If d.exists(arr(1)(i, 2)) Then
  19.                     d(arr(1)(i, 2)) = d(arr(1)(i, 2)) + arr(1)(i, 3)
  20.                 End If
  21.             Next
  22.         End If
  23.         fl = Dir
  24.     Loop
  25.     [c4].Resize(d.Count) = Application.Transpose(d.items)
  26.     Application.ScreenUpdating = True
  27. End Sub
复制代码


查找匹配求和.rar (59.71 KB, 下载次数: 13)
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-6-6 08:56 , Processed in 0.236982 second(s), 10 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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