ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 多工作簿汇总,汇总数据区域如何累加,求大神指点

[复制链接]
头像被屏蔽

TA的精华主题

TA的得分主题

发表于 2018-7-27 23:33 来自手机 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
提示: 作者被禁止或删除 内容自动屏蔽

TA的精华主题

TA的得分主题

发表于 2018-7-28 08:19 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
先把汇总工作簿对应数据读入数组(汇总数组),再把要汇总的各工作簿对应数据读入数组(数据数组),然后循环一下数组,把数据数组里的数加到汇总数组里,最后把汇总数组写到汇总工作簿里就是了

TA的精华主题

TA的得分主题

发表于 2018-7-28 09:03 | 显示全部楼层
tudarong 发表于 2018-7-27 11:57
ADO没有学过,字典还可以看懂,可以帮忙写一段吗?
  1. Sub ADO多薄首表相同单元格汇总()
  2.     Dim Fso As Object, File As Object, cnn As Object, SQL$, n&, arr, brr(22, 14), i&
  3.     Set Fso = CreateObject("Scripting.FileSystemObject")
  4.     Set cnn = CreateObject("adodb.connection")
  5.     crr = [C5:Q27]
  6.     For Each File In Fso.GetFolder(ThisWorkbook.Path).Files
  7.         If File.Name Like "*.xlsx" And File.Name <> ThisWorkbook.Name Then
  8.             n = n + 1
  9.             If n = 1 Then cnn.Open "provider=microsoft.ace.oledb.12.0;extended properties=excel 12.0;data source=" & File
  10.             SQL = "select * from [Excel 12.0;hdr=no;Database=" & File & ";].[$C5:Q27]"
  11.             arr = cnn.Execute(SQL).GetRows
  12.             For r = 0 To UBound(arr, 2)
  13.               For c = 0 To UBound(arr)
  14.                 If r <> 16 Then
  15.                   brr(r, c) = brr(r, c) + arr(c, r)
  16.                 Else
  17.                   brr(r, c) = crr(r + 1, c + 1)
  18.                 End If
  19.               Next c
  20.             Next r
  21.         End If
  22.     Next
  23.     Range("C5:Q27") = brr
  24.     cnn.Close
  25.     Set cnn = Nothing
  26.     Set Fso = Nothing
  27. End Sub
复制代码

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-7-28 09:53 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
jiminyanyan 发表于 2018-7-27 22:31
我试了,代码可以运行的。。。

If m <> "" And n <> "" And m <> 21 Then
我把这句代码改成
If m <>0 And n <> 0 And m <> 21 Then
就可以运行了。
但是运行得到的结果是不对的。
这段代码中arr(i,2)有重名,写入字典后数据就缺失了,导致了前面的没有数据。
不过版主的思路,我已明白,还是感谢大家的指点。
    For i = 5 To UBound(arr)
        If Len(arr(i, 2)) Then
            d(Trim(arr(i, 2))) = i
        End If
    Next i

TA的精华主题

TA的得分主题

发表于 2018-7-28 10:22 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2018-7-28 12:35 | 显示全部楼层
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-22 13:35 , Processed in 0.043104 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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