Excel精英培训网

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

[已解决]EXCEL三个表格内容汇总到一个表格,然后按名称排列,用VBA代码编写

[复制链接]
发表于 2014-6-21 15:32 | 显示全部楼层 |阅读模式
要把sheet1 sheet2 sheet3 三个表格中的数据汇总到生产表中,汇总到生产表后要按名称排列,求VBA代码怎么写?(sheet1,sheet2,sheet3三个表格的内容会变动)。在线等,先谢谢各位老师们了。具体表格见附件。
最佳答案
2014-6-21 16:24
  1. Sub test()
  2.     Dim sh As Worksheet
  3.     Dim arr, x&, i&
  4.     Range("a4:h" & Rows.Count).ClearContents
  5.     i = 4
  6.     For Each sh In Sheets
  7.         If sh.Name <> "生产单" Then
  8.             With sh
  9.                 arr = .Range("b12:i" & .Cells(Rows.Count, 2).End(3).Row)
  10.             End With
  11.             Sheets("生产单").Cells(i, 1).Resize(UBound(arr), 8) = arr
  12.             i = i + UBound(arr)
  13.         End If
  14.     Next
  15.     Range("a3:h3").Resize(i).Sort Range("a3:h3"), Header:=xlGuess
  16. End Sub
复制代码

生产单.zip

16.08 KB, 下载次数: 18

excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2014-6-21 16:00 | 显示全部楼层
  1. Sub test()
  2.     Dim sh As Worksheet
  3.     Dim arr, x&, i&
  4.     Range("a4:h" & Rows.Count).ClearContents
  5.     i = 4
  6.     For Each sh In Sheets
  7.         If sh.Name <> "生产单" Then
  8.             With sh
  9.                 arr = .Range("b12:i" & .Cells(Rows.Count, 2).End(3).Row)
  10.             End With
  11.             Sheets("生产单").Cells(i, 1).Resize(UBound(arr), 8) = arr
  12.             i = i + UBound(arr)
  13.         End If
  14.     Next
  15. End Sub
复制代码

生产单.rar

28.79 KB, 下载次数: 40

回复

使用道具 举报

 楼主| 发表于 2014-6-21 16:09 | 显示全部楼层
云影 发表于 2014-6-21 16:00

谢谢。内容是添加进来了,怎么样才能够让内容按名称排列。同名称的排列到一起
回复

使用道具 举报

发表于 2014-6-21 16:24 | 显示全部楼层    本楼为最佳答案   
  1. Sub test()
  2.     Dim sh As Worksheet
  3.     Dim arr, x&, i&
  4.     Range("a4:h" & Rows.Count).ClearContents
  5.     i = 4
  6.     For Each sh In Sheets
  7.         If sh.Name <> "生产单" Then
  8.             With sh
  9.                 arr = .Range("b12:i" & .Cells(Rows.Count, 2).End(3).Row)
  10.             End With
  11.             Sheets("生产单").Cells(i, 1).Resize(UBound(arr), 8) = arr
  12.             i = i + UBound(arr)
  13.         End If
  14.     Next
  15.     Range("a3:h3").Resize(i).Sort Range("a3:h3"), Header:=xlGuess
  16. End Sub
复制代码
回复

使用道具 举报

 楼主| 发表于 2014-6-21 16:28 | 显示全部楼层
云影 发表于 2014-6-21 16:24

谢谢云影老师!
回复

使用道具 举报

 楼主| 发表于 2014-6-22 11:11 | 显示全部楼层
云影 发表于 2014-6-21 16:24

云影老师你好,程序有个小问题,就是当表格内没有数据时程序把表格内标题内容汇总过来了,能不能加条语句判断表格内没有汇总数据时查找下一个表进行数据汇总。
回复

使用道具 举报

发表于 2014-6-22 14:59 | 显示全部楼层
  1. Sub shengchandan()
  2.     Dim sh As Worksheet
  3.     Dim arr, x&, i&
  4.     Range("a4:h" & Rows.Count).ClearContents
  5.     i = 4
  6.     For Each sh In Sheets
  7.         If sh.Name <> "生产单" Then
  8.             With sh
  9.                 x = .Cells(Rows.Count, 2).End(3).Row
  10.                 If x < 12 Then Exit For
  11.                 arr = .Range("b12:i" & x)
  12.             End With
  13.             Sheets("生产单").Cells(i, 1).Resize(UBound(arr), 8) = arr
  14.             i = i + UBound(arr)
  15.         End If
  16.     Next
  17.     Range("a3:h3").Resize(i).Sort Range("a3:h3"), Header:=xlGuess
  18. End Sub
复制代码
回复

使用道具 举报

 楼主| 发表于 2014-6-22 15:25 | 显示全部楼层
云影 发表于 2014-6-22 14:59

谢谢!
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-19 13:50 , Processed in 0.230720 second(s), 13 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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