ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

新手,求大神帮助,多个sheet表的数据提取到一张汇总表中

[复制链接]

TA的精华主题

TA的得分主题

发表于 2015-3-11 11:22 | 显示全部楼层 |阅读模式
见附件,多个sheet表(绩效表格),最终要提取几个固定位置的数据到最后的汇总表中,如何做,求帮助。 officer performance draft V2 - 副本.7z (34.63 KB, 下载次数: 73)

TA的精华主题

TA的得分主题

发表于 2015-3-11 11:54 | 显示全部楼层
  1. Sub 汇总()
  2.     Dim Arr(1 To 100, 1 To 12), i%, j%, drow%, k%, ddrow%
  3.     i = 1
  4.     Dim sht As Worksheet        '定义sht 为工作表
  5.     ' Worksheets("汇总表").Range("a2:p65536").ClearContents
  6.     For Each sht In Worksheets
  7.         ' With sht
  8.       '  MsgBox sht.Name
  9.         If sht.Name <> "汇总表" Then
  10.             With sht
  11.                 ' drow = sht.Range("a65536").End(xlUp).Row
  12.                 Arr(i, 2) = .Range("d4"): Arr(i, 3) = .Range("n4"): Arr(i, 4) = .Range("d5")
  13.                 Arr(i, 5) = .Range("d6"): Arr(i, 7) = .Range("q19"): Arr(i, 8) = .Range("q31")
  14.                 Arr(i, 9) = .Range("q43"): Arr(i, 10) = .Range("q55"): Arr(i, 11) = .Range("q67")
  15.                 Arr(i, 12) = .Range("q72")
  16.                 Arr(i, 1) = i
  17.                 i = i + 1
  18.             End With

  19.             '  ddrow = Worksheets("汇总").Range("a65531").End(xlUp).Row + 1
  20.             '  MsgBox ddrow

  21.         End If
  22.         ' End With
  23.     Next

  24.     Worksheets("汇总表").Range("a" & Worksheets("汇总表").Range("b65536").End(3).Row + 1).Resize(UBound(Arr, 1), UBound(Arr, 2)) = Arr
  25. End Sub
复制代码

TA的精华主题

TA的得分主题

发表于 2015-3-11 11:55 | 显示全部楼层
请查看附件。
没有模拟结果,不知道有没有弄错。以后最后把模拟结果也弄上一个。

officer performance draft V2 - 副本.zip

42.36 KB, 下载次数: 84

TA的精华主题

TA的得分主题

 楼主| 发表于 2015-3-13 09:19 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2015-3-13 10:24 | 显示全部楼层
TomingTang 发表于 2015-3-11 11:55
请查看附件。
没有模拟结果,不知道有没有弄错。以后最后把模拟结果也弄上一个。

测试了一下,很好用,还有个问题:
1.如果以后,在汇总表里需要增加提取内容,我应该怎么改这个代码呢?请原谅,我现在VB连入门还没开始呢。
2.我如果有很多人的这个表格,当然格式都是一样的,我只需要把她们的sheet表插入到这个工作簿里就可以了是吗?
3.当前边的SHEET表格中的数据有变化时,后边的汇总表中,是实时更新的吗?我应该怎么做?我发现,当我重复点击两次宏按钮的时候,所有的数据是重新在原有数据下边再次提取,而不是更新。

TA的精华主题

TA的得分主题

发表于 2015-3-13 14:33 | 显示全部楼层
1、11-16行哪里增加代码,增加需要汇总的项
2、插入到这个工作簿就可以了。
3、是需要你点击代码运行。代码会把汇总数据加到汇总表下面。
如果想不重复,就把汇总表数据删除,再运行。或者我调整一下代码。

TA的精华主题

TA的得分主题

 楼主| 发表于 2015-3-13 14:58 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
对于第二个问题,我最多可以插入多少个sheet表呢?是100吗?
对于第三个问题,比较奇怪,附件中是我点了3次的结果,而我不希望是这样的。但奇怪的是,你开始给我的代码在运行的时候,得到的结果不是这样的。而是在原有的1.2.3.4行处更新数据,但我不清楚是我做了什么操作,就变成了现在这样子,我比较了这两种代码,没有发现区别。

PS,我学习了你的代码,也发现了是在11-16行处增加内容。但没看懂,是哪一处代码的设置,让更新的数据是在汇总表里的第四行开始更新,请教? officer performance draft V3.zip (51.04 KB, 下载次数: 51)

TA的精华主题

TA的得分主题

 楼主| 发表于 2015-3-13 15:32 | 显示全部楼层
TomingTang 发表于 2015-3-13 14:33
1、11-16行哪里增加代码,增加需要汇总的项
2、插入到这个工作簿就可以了。
3、是需要你点击代码运行。代 ...

请帮忙调整一下代码,每次点击“提取数据”的时候,在原位置更新数据,而不是在第一次提取数据的下方,再提取一次。

TA的精华主题

TA的得分主题

 楼主| 发表于 2015-3-16 08:34 | 显示全部楼层
顶上,研究了好久还是没有看明白,明明是相同的代码,为什么出来的效果就是不一样的呢

TA的精华主题

TA的得分主题

发表于 2015-3-16 16:41 | 显示全部楼层
  1. Sub 汇总()
  2.     Dim Arr(1 To 1000, 1 To 12), i%, j%, drow%, k%, ddrow%
  3.     i = 1
  4.     Dim sht As Worksheet        '定义sht 为工作表
  5.     ' Worksheets("汇总表").Range("a2:p65536").ClearContents
  6.     For Each sht In Worksheets
  7.         ' With sht
  8.         '  MsgBox sht.Name
  9.         If sht.Name <> "汇总表" Then
  10.             With sht
  11.                 ' drow = sht.Range("a65536").End(xlUp).Row
  12.                 Arr(i, 2) = .Range("d4"): Arr(i, 3) = .Range("n4"): Arr(i, 4) = .Range("d5")
  13.                 Arr(i, 5) = .Range("d6"): Arr(i, 6) = .Range("b2"): Arr(i, 7) = .Range("q19"):
  14.                 Arr(i, 8) = .Range("q31"): Arr(i, 9) = .Range("q43"): Arr(i, 10) = .Range("q55"):
  15.                 Arr(i, 11) = .Range("q67"): Arr(i, 12) = .Range("q72")
  16.                 Arr(i, 1) = i
  17.                 i = i + 1
  18.             End With

  19.             '  ddrow = Worksheets("汇总").Range("a65531").End(xlUp).Row + 1
  20.             '  MsgBox ddrow

  21.         End If
  22.         ' End With
  23.     Next
  24.     Worksheets("汇总表").Range("a4:l1000").ClearContents
  25.     Worksheets("汇总表").Range("a4").Resize(UBound(Arr, 1), UBound(Arr, 2)) = Arr
  26. End Sub
复制代码
表格数量不限制。目前看定义的数组量大小,我改成了1000
第三个已经改好了。

officer performance draft V3.zip

49.6 KB, 下载次数: 102

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

本版积分规则

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

GMT+8, 2024-11-26 00:30 , Processed in 0.045429 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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