Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 5825|回复: 2

[已解决]VBA 工作簿下各工作表数据汇总

[复制链接]
发表于 2016-11-24 14:26 | 显示全部楼层 |阅读模式
本帖最后由 摩米 于 2016-11-25 14:07 编辑

详情 请见附件
此工作簿有数据的子表 为Sheet1--Sheet500
“工作表名称”列 即对应各工作表
希望到结果:1、点击 “汇总” 可以在“汇总”工作表 合并所有 有数据的工作表内数据。
2.点击“筛选汇总”可以在“筛选汇总”工作表 合并 目录“筛选汇总”列下 对应工作表数据。
"汇总"工作表 和 "筛选汇总"工作表 现在显示的数据,即为想要的结果。

请求 老师费心编写一下,万分感谢!请大神帮帮忙


最佳答案
2016-11-25 18:08
  1. Sub 汇总()
  2.     Dim arr, i&
  3.     Sheets("汇总").[a2:i65536] = ""
  4.     For i = 1 To 500
  5.         With Sheets("Sheet" & i)
  6.             If Len(.Range("a2")) Then
  7.                 arr = .UsedRange.Offset(1)
  8.                 With Sheets("汇总")
  9.                     r = .[a65536].End(3).Row + 1
  10.                     .Range("a" & r).Resize(UBound(arr), 9) = arr
  11.                 End With
  12.             End If
  13.         End With
  14.     Next
  15.     MsgBox "汇总完毕!"
  16. End Sub
  17. Sub 筛选汇总()
  18.     Dim arr, i&, j&
  19.     Sheets("筛选汇总").[a2:i65536] = ""
  20.     With Sheets("目录")
  21.         For j = 2 To .[k65536].End(3).Row
  22.             For i = 2 To .[a65536].End(3).Row
  23.                 If .Range("b" & i) Like "*" & .Range("k" & j).Value & "*" Then
  24.                     With Sheets(.Range("a" & i).Value)
  25.                         If Len(.Range("a2")) Then
  26.                             arr = .UsedRange.Offset(1)
  27.                             With Sheets("筛选汇总")
  28.                                 r = .[a65536].End(3).Row + 1
  29.                                 .Range("a" & r).Resize(UBound(arr), 9) = arr
  30.                             End With
  31.                         End If
  32.                     End With
  33.                 End If
  34.             Next
  35.         Next
  36.     End With
  37.     MsgBox "汇总完毕!"
  38. End Sub
复制代码


模板.rar (567.44 KB, 下载次数: 38)

模板.rar

330.54 KB, 下载次数: 12

发表于 2016-11-25 18:08 | 显示全部楼层    本楼为最佳答案   
  1. Sub 汇总()
  2.     Dim arr, i&
  3.     Sheets("汇总").[a2:i65536] = ""
  4.     For i = 1 To 500
  5.         With Sheets("Sheet" & i)
  6.             If Len(.Range("a2")) Then
  7.                 arr = .UsedRange.Offset(1)
  8.                 With Sheets("汇总")
  9.                     r = .[a65536].End(3).Row + 1
  10.                     .Range("a" & r).Resize(UBound(arr), 9) = arr
  11.                 End With
  12.             End If
  13.         End With
  14.     Next
  15.     MsgBox "汇总完毕!"
  16. End Sub
  17. Sub 筛选汇总()
  18.     Dim arr, i&, j&
  19.     Sheets("筛选汇总").[a2:i65536] = ""
  20.     With Sheets("目录")
  21.         For j = 2 To .[k65536].End(3).Row
  22.             For i = 2 To .[a65536].End(3).Row
  23.                 If .Range("b" & i) Like "*" & .Range("k" & j).Value & "*" Then
  24.                     With Sheets(.Range("a" & i).Value)
  25.                         If Len(.Range("a2")) Then
  26.                             arr = .UsedRange.Offset(1)
  27.                             With Sheets("筛选汇总")
  28.                                 r = .[a65536].End(3).Row + 1
  29.                                 .Range("a" & r).Resize(UBound(arr), 9) = arr
  30.                             End With
  31.                         End If
  32.                     End With
  33.                 End If
  34.             Next
  35.         Next
  36.     End With
  37.     MsgBox "汇总完毕!"
  38. End Sub
复制代码


模板.rar (567.44 KB, 下载次数: 38)
回复

使用道具 举报

 楼主| 发表于 2016-11-25 19:16 | 显示全部楼层

老师您的代码真的是好用,非常感谢您的帮助,老师您辛苦了!{:211:}
回复

使用道具 举报

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

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-6-6 08:06 , Processed in 0.652507 second(s), 13 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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