ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 实现多表合并

[复制链接]

TA的精华主题

TA的得分主题

 楼主| 发表于 2014-4-4 22:02 | 显示全部楼层
chxw68 发表于 2014-4-3 21:15

若有51列数据,1-3行是表头,4行开始是数据,怎么改代码啊?

TA的精华主题

TA的得分主题

 楼主| 发表于 2014-4-4 22:03 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
dajiahaoxinku12 发表于 2014-4-3 22:11
Sub 求和()
    ReDim brr(1 To 10000, 1 To 16)
    ReDim crr(1 To 10000, 1 To 16)

若有51列数据,1-3行是表头,4行开始是数据,怎么改代码啊?

TA的精华主题

TA的得分主题

发表于 2014-4-5 18:45 | 显示全部楼层
本帖最后由 cbtaja 于 2014-4-5 19:58 编辑
湘西农民 发表于 2014-4-4 22:03
若有51列数据,1-3行是表头,4行开始是数据,怎么改代码啊?


按7楼代码,作简化而得,并修正合并依据为姓名、部门的双条件。可根据情况修改代码中前3句的数值。 Const bths = 4 '表头行数
  1. Const bths = 4 '表头行数
  2. Const btls = 4 '表头列数
  3. Const bgzls = 16 '表格总列数
  4. Sub 求和()
  5. ReDim brr(1 To 10000, 1 To bgzls)
  6. Set d = CreateObject("scripting.dictionary")
  7. For Each sht In Worksheets
  8. If sht.Name <> "汇总" Then
  9. i = sht.Range("b65536").End(3).Row
  10. arr = sht.[a1].Offset(bths, 0).Resize(i - bths, bgzls)
  11. For y = 1 To UBound(arr)
  12. If d.Exists(arr(y, 2) & arr(y, 4)) Then
  13. Z = d(arr(y, 2) & arr(y, 4))
  14. For p = btls + 1 To bgzls
  15. brr(Z, p) = brr(Z, p) + arr(y, p)
  16. Next
  17. Else
  18. m = m + 1
  19. d(arr(y, 2) & arr(y, 4)) = m
  20. brr(m, 1) = m
  21. For p = 2 To bgzls
  22. brr(m, p) = arr(y, p)
  23. Next
  24. End If
  25. Next
  26. End If
  27. Next
  28. Me.UsedRange.Offset(bths, 0).Clear
  29. With [a1].Offset(bths, 0).Resize(m, bgzls)
  30. .Value = brr
  31. .Borders.LineStyle = xlContinuous
  32. End With
  33. End Sub
复制代码

TA的精华主题

TA的得分主题

发表于 2014-4-5 20:02 | 显示全部楼层
这个是上面代码对应的附件: 工资表.rar (17.57 KB, 下载次数: 158)

TA的精华主题

TA的得分主题

 楼主| 发表于 2014-4-11 21:45 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
cbtaja 发表于 2014-4-5 18:45
按7楼代码,作简化而得,并修正合并依据为姓名、部门的双条件。可根据情况修改代码中前3句的数值。 Con ...

你好,能不能把每条语句什么意思写一下,便于我们这些新手学习

TA的精华主题

TA的得分主题

 楼主| 发表于 2014-4-11 22:10 | 显示全部楼层
cbtaja 发表于 2014-4-5 20:02
这个是上面代码对应的附件:

我适当修改了一下,我从第四行开始是数据,总共51列,运行出现无效ME关键字

TA的精华主题

TA的得分主题

发表于 2014-4-11 22:24 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
本帖最后由 cbtaja 于 2014-4-11 22:26 编辑
湘西农民 发表于 2014-4-11 22:10
我适当修改了一下,我从第四行开始是数据,总共51列,运行出现无效ME关键字


你要是不懂怎么改,就把一个模拟表格发上来(其中的人名用AAA1、AAA2、AAA3之类的代替,模拟10来人的数据即可),关键是与你实际表格的格式要保持相同。

TA的精华主题

TA的得分主题

 楼主| 发表于 2014-4-11 22:38 | 显示全部楼层
cbtaja 发表于 2014-4-11 22:24
你要是不懂怎么改,就把一个模拟表格发上来(其中的人名用AAA1、AAA2、AAA3之类的代替,模拟10来人的数 ...

发来了,你看看 我增加四列 和一行

工资表.rar

15.25 KB, 下载次数: 26

TA的精华主题

TA的得分主题

 楼主| 发表于 2014-4-11 22:39 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
坐等你的修改信息

TA的精华主题

TA的得分主题

发表于 2014-4-11 22:51 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
湘西农民 发表于 2014-4-11 22:39
坐等你的修改信息

只需改一个字——把代码中第一句的4改成5即可:
Const bths = 4 '表头行数
改成:
Const bths = 5 '表头行数
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

关闭

最新热点上一条 /1 下一条

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

GMT+8, 2024-4-19 14:37 , Processed in 0.051901 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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