ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 45751|回复: 21

[求助] 如何把多个工作簿的数据快速汇总至一个工作簿中?

[复制链接]

TA的精华主题

TA的得分主题

发表于 2010-11-22 13:09 | 显示全部楼层 |阅读模式
我要统计下属20余个单位的数据。
现在我把数据表工作簿(格式相同)下发给每个单位,让他们自己填写数据,然后由他们传给我,我集中收集后再进行统计。
我的问题是:(1)手工统计肯定不科学,笨也累;
(2)把其他工作簿中的数据全部粘贴至我的汇总工作簿中(格式相同),再用公式进行相加操作。这个方法到可行,但要复制粘贴20余下,也累得够呛。
想问老师:有没有什么办法,能够把下属单位报上来的数据(相同格式)快速统计到我的汇总工作簿来(格式同样的都一样)。

TA的精华主题

TA的得分主题

发表于 2010-11-22 13:27 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2010-11-22 13:47 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2010-11-23 18:57 | 显示全部楼层

附件来了。

见附件,快速统计单位1,2,3数据至“汇总表”,几个表格式全相同

汇总.rar

6.2 KB, 下载次数: 2127

TA的精华主题

TA的得分主题

发表于 2010-11-23 20:02 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
哈哈我也用得上

TA的精华主题

TA的得分主题

发表于 2010-11-23 20:17 | 显示全部楼层
代码放到汇总表中。
  1. Sub huizong()
  2.     Dim s
  3.     Dim irow&, k&
  4.     Dim sht As Worksheet, Nsht As Worksheet
  5.     Dim wb As Workbook, th As Workbook    '定义详细的变量类型,可以提高代码的速度

  6.     Set th = ThisWorkbook
  7.     Application.ScreenUpdating = False
  8.     th.Sheets("Sheet1").Range("B2:c5").ClearContents    '先要清除掉各工作表相应区域的内容
  9.   
  10.     With Application.FileSearch    '建立一个对文件的查询
  11.         .NewSearch
  12.         .LookIn = th.Path    '搜索范围为本工作簿的路径下
  13.         .Filename = "*.xls"    '搜索所有的xls文件
  14.         .Execute    '执行这个搜索

  15.         For Each s In .FoundFiles    '在每一个搜索的工作簿里循环
  16.             If s <> th.FullName Then    '如果搜索到工作簿名称不为本工作簿
  17.                 Set wb = Workbooks.Open(s)    '设置一个变量来代替这个新打开工作簿

  18.                 For Each sht In th.Sheets    '在工作表里循环
  19.                     If sht.Name <> th.Name Then    '假如工作表不为“汇总表代码”,则
  20.                         If Testsht(sht.Name, wb) Then    '测试工作表在新的工作薄里有没有,如果有,则执行下面的拷贝数据
  21.                             If sht.Name = "Sheet1" Then    '针对每一个表,复制的区域不一致
  22.                                 wb.Sheets("Sheet1").Range("B2:c5").Copy    '复制数据区域
  23.                                 th.Sheets("Sheet1").Range("B2:c5").PasteSpecial Paste:=xlPasteValues, Operation:=xlAdd, SkipBlanks _
  24.         :=False, Transpose:=False
  25.                             End If
  26.                         End If
  27.                     End If
  28.                 Next
  29.                 wb.Close False    '最后关闭打开的工作簿
  30.             End If
  31.         Next
  32.     End With
  33.     Application.ScreenUpdating = True
  34.     MsgBox "数据已汇总完毕!"
  35. End Sub
  36. '这是一个自定义函数,用于判断一个工作表是否存在在其他工作薄的表里,此函数被接收汇总过程调用。
  37. Function Testsht(shtname As String, wb As Workbook) As Boolean
  38.     Dim s As String
  39.     On Error GoTo line1
  40.     s = wb.Sheets(shtname).Name    '选择工作表,如果可以选择的话就是true,然后退出
  41.     Testsht = True
  42.     Exit Function
  43. line1:
  44.     Testsht = False    '如果工作表不存在,则会跳转到line1这里,即为false
  45. End Function
复制代码

TA的精华主题

TA的得分主题

发表于 2010-11-23 20:45 | 显示全部楼层
再搞一个方法,坛子里的代码组装一下。
  1. Sub hz_2()
  2.     Dim Fso, Fld, Fl
  3.     Dim arr, brr(1 To 4, 1 To 2), i%, j%
  4.     Set Fso = CreateObject("Scripting.FileSystemObject")
  5.     Set Fld = Fso.getfolder(ThisWorkbook.Path & "\数据")
  6.     If Fld.Files.Count > 0 Then
  7.         Application.ScreenUpdating = False
  8.         For Each Fl In Fld.Files
  9.             Workbooks.Open (Fl)
  10.             arr = ActiveWorkbook.Worksheets(1).[B2:c5] '各表数据域赋给数组arr
  11.             For i = 1 To 4 '逐行
  12.                 For j = 1 To 2 '逐列
  13.                     If IsNumeric(arr(i, j)) Then brr(i, j) = brr(i, j) + arr(i, j) '如果单元格是数字则累加
  14.                 Next
  15.             Next
  16.             ActiveWorkbook.Close
  17.         Next
  18.         Application.ScreenUpdating = True
  19.         ThisWorkbook.Worksheets(1).[B2:c5] = brr '写数据
  20.         MsgBox "数据汇总完成"
  21.     Else
  22.         MsgBox "没有找到任何工作簿文件"
  23.     End If

  24. End Sub

复制代码

新建文件夹 (2).rar

12.98 KB, 下载次数: 2066

TA的精华主题

TA的得分主题

 楼主| 发表于 2010-11-28 18:39 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
jiminyanyan朋友,很好很强大

TA的精华主题

TA的得分主题

发表于 2011-3-15 17:17 | 显示全部楼层
小白  弄不懂  你的附件就几个表格??

TA的精华主题

TA的得分主题

发表于 2012-2-4 09:10 | 显示全部楼层
jiminyanyan 发表于 2010-11-23 20:17
代码放到汇总表中。

这个代码为什么不能执行?
子过程或函数未定义
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2025-1-17 03:00 , Processed in 0.025890 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

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