ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 同一文件夹下多个工作簿中同一工作表相同位置单元格求和

[复制链接]

TA的精华主题

TA的得分主题

发表于 2019-4-20 22:29 | 显示全部楼层 |阅读模式
现有十个工作簿,每个工作人员簿有相同格式的工作表,要把表1到表10的f8单元格数据求和,填写到汇总表的f8单元格,接着,把表1到表10的g8单元格数据求和,填写到汇总表的g8单元格;汇总的区域是f8:n25,求高手指点。

新建文件夹.zip

146.54 KB, 下载次数: 121

TA的精华主题

TA的得分主题

发表于 2019-4-20 22:46 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2019-4-20 22:55 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
循环每个工作簿的每个工作表,然后把f8:n25写入数组,再对数组求和

TA的精华主题

TA的得分主题

发表于 2019-4-21 09:31 | 显示全部楼层
  1. Option Explicit
  2. Sub 清除表名空格() '所有工作簿中的2017工作表名中有空格,先运行此段去除空格。
  3. Application.ScreenUpdating = False
  4. Dim fil, sh As Worksheet
  5. For Each sh In ThisWorkbook.Worksheets
  6.     sh.Name = Replace(sh.Name, " ", "")
  7. Next
  8. For Each fil In CreateObject("scripting.filesystemobject").GetFolder(ThisWorkbook.Path).Files
  9.     If InStr(fil.Name, ".xlsx") And InStr(fil.Name, "~$") = 0 Then
  10.         With Workbooks.Open(fil)
  11.             For Each sh In .Worksheets
  12.                 sh.Name = Replace(sh.Name, " ", "")
  13.             Next
  14.             .Close 1
  15.         End With
  16.     End If
  17. Next
  18. Application.ScreenUpdating = True
  19. MsgBox "ok", 64
  20. End Sub

  21. Sub 获取汇总数据()
  22. Application.ScreenUpdating = False
  23. Dim a, cnn As Object, fil, sql$, k&, tp, i%, st$, r%, c%
  24. Set cnn = CreateObject("adodb.connection")
  25. a = Split("2017 2018")
  26. For i = 0 To UBound(a)
  27.     k = 0
  28.     For Each fil In CreateObject("scripting.filesystemobject").GetFolder(ThisWorkbook.Path).Files
  29.         If InStr(fil.Name, ".xlsx") And InStr(fil.Name, "~$") = 0 Then
  30.             k = k + 1
  31.             If k = 1 Then
  32.                 cnn.Open "provider=microsoft.ace.oledb.12.0;extended properties='Excel 12.0;hdr=no';data source=" & fil
  33.             Else
  34.                 st = "[Excel 12.0;hdr=no;Database=" & fil & ";]."
  35.             End If
  36.             sql = "SELECT * FROM " & st & "[" & a(i) & "$f8:n25]"
  37.             tp = cnn.Execute(sql).GetRows
  38.             If k = 1 Then
  39.                 ReDim ar(0 To UBound(tp, 2), 0 To UBound(tp))
  40.             End If
  41.             For r = 0 To UBound(tp, 2)
  42.                 For c = 0 To UBound(tp)
  43.                     If tp(c, r) <> "" Then ar(r, c) = ar(r, c) + tp(c, r)
  44.                 Next
  45.             Next
  46.         End If
  47.     Next
  48.     If cnn.State = 1 Then cnn.Close
  49.     ThisWorkbook.Sheets(a(i) & "年").[f8].Resize(r, c) = ar
  50. Next
  51. Set cnn = Nothing
  52. Application.ScreenUpdating = True
  53. MsgBox "ok", 64
  54. End Sub
复制代码

TA的精华主题

TA的得分主题

发表于 2019-4-21 10:28 | 显示全部楼层
表结构不一样啊,有点费劲了                                                                                       
头像被屏蔽

TA的精华主题

TA的得分主题

发表于 2019-4-21 14:28 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-4-21 20:25 | 显示全部楼层
cspostwjq 发表于 2019-4-21 14:28
相同位置的汇总,我这里艾敦制表神器有一个成熟的处理模块,先把需要汇总的表汇总到一个工作薄里,这也可利 ...

这个神器怎么下载不下来?

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-4-21 20:26 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-4-21 20:27 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册

TA的精华主题

TA的得分主题

发表于 2019-4-21 20:43 | 显示全部楼层
本帖最后由 xiangbaoan 于 2019-4-22 13:57 编辑

就你提供的附件,这里没问题,附件请测试。

2019-4-22 13:56 补充:
对我而言,这是一次很扯淡的回复,得不到任何反馈,更得不到一个所谓的 感谢帮助,特意看了提问者的帖子,都是这样……

汇总.rar

31.74 KB, 下载次数: 189

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

本版积分规则

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

GMT+8, 2024-3-29 19:44 , Processed in 0.058281 second(s), 9 queries , Gzip On, Redis On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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