Excel精英培训网

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

[已解决]如何借助VBA批量将表格分几部分汇总

[复制链接]
发表于 2013-12-7 21:41 | 显示全部楼层 |阅读模式
5学分
本帖最后由 爱疯 于 2013-12-8 08:40 编辑

数据上传了,主要是表格不规范,我又不能去让别人改表格,等于是批量修改表格布局,并汇总。求VBA代码。 样本.rar (33.04 KB, 下载次数: 26)

excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2013-12-10 19:43 | 显示全部楼层    本楼为最佳答案   
在汇总表中插入一个按钮写入下面的代码
  1. Private Sub CommandButton1_Click()
  2. ReDim OpData1(1 To 6, 1 To 999999)
  3. ReDim OpData2(1 To 6, 1 To 999999)
  4. OpData1N = 0
  5. OpData2N = 0
  6. MyPath = ThisWorkbook.Path & "\数据"
  7. MyName = Dir(MyPath & "*.xlsx")
  8. Do While MyName <> ""
  9. Set wk = Workbooks.Open(MyPath & "" & MyName)
  10. DataArr = wk.ActiveSheet.UsedRange.Value
  11. TimeData = DataArr(2, 1)
  12. i = 4
  13. Do While DataArr(i + 1, 1) <> "尾巴"
  14. i = i + 1
  15. OpData1N = OpData1N + 1
  16. For k = 1 To 5
  17. OpData1(k, OpData1N) = DataArr(i, k)
  18. Next k
  19. OpData1(6, OpData1N) = TimeData
  20. Loop
  21. Do While i < UBound(DataArr)
  22. i = i + 1
  23. OpData2N = OpData2N + 1
  24. For k = 1 To 5
  25. OpData2(k, OpData2N) = DataArr(i, k)
  26. Next k
  27. OpData2(6, OpData2N) = TimeData
  28. Loop
  29. wk.Close False
  30. MyName = Dir
  31. Loop
  32. ReDim Preserve OpData1(1 To 6, 1 To OpData1N)
  33. ReDim Preserve OpData2(1 To 6, 1 To OpData2N)
  34. ReDim OpData_1(1 To OpData1N, 1 To 6)
  35. ReDim OpData_2(1 To OpData2N, 1 To 6)
  36. For i = 1 To OpData1N
  37. For j = 1 To 6
  38. OpData_1(i, j) = OpData1(j, i)
  39. Next j
  40. Next i
  41. For i = 1 To OpData2N
  42. For j = 1 To 6
  43. OpData_2(i, j) = OpData2(j, i)
  44. Next j
  45. Next i
  46. ThisWorkbook.Sheets(1).Range("A" & ThisWorkbook.Sheets(1).Range("A65536").End(xlUp).Row + 1).Resize(OpData1N, 6).Value = OpData_1
  47. ThisWorkbook.Sheets(2).Range("A" & ThisWorkbook.Sheets(2).Range("A65536").End(xlUp).Row + 1).Resize(OpData2N, 6).Value = OpData_2
  48. End Sub
复制代码
代码执行前确保那些需要汇总的表里面的各种文本框什么的都删除掉,不要有多余的数据什么的就可以了
因为我是日文系统,所以你那个什么尾巴的打不出来,我就只保留“尾巴”两个字了
回复

使用道具 举报

 楼主| 发表于 2013-12-10 20:52 | 显示全部楼层
sgxb123431380 发表于 2013-12-10 19:43
在汇总表中插入一个按钮写入下面的代码代码执行前确保那些需要汇总的表里面的各种文本框什么的都删除掉,不 ...

谢谢,一次通过,你太厉害了。原来需要这么多行,难怪挂了好几天没人理我,原来是在思考,谢谢。
回复

使用道具 举报

发表于 2013-12-11 08:12 | 显示全部楼层
justawaylife 发表于 2013-12-10 20:52
谢谢,一次通过,你太厉害了。原来需要这么多行,难怪挂了好几天没人理我,原来是在思考,谢谢。

不客气,我也是昨天晚上才看现写的,主要不是不好写,是理解你里面的说明文字比较费事
回复

使用道具 举报

 楼主| 发表于 2013-12-18 20:31 | 显示全部楼层
sgxb123431380 发表于 2013-12-11 08:12
不客气,我也是昨天晚上才看现写的,主要不是不好写,是理解你里面的说明文字比较费事

主要是表格不规范,表述起来没有什么可以参考的东西,所以要重新建立一个概念的模型,我自己也不知道怎么表达顺畅,只好那样一点点地表达。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-13 08:11 , Processed in 0.759832 second(s), 11 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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