怎么利用ExcelVBA解决棘手的数据提取问题

今天同事问了个我一个数据提取的问题 。他的需求是这样的:
他有1个工作簿 , 里面有100个工作表 。他希望把每个工作表里的第6行的b6:i6数据复制到一起 , 
也就是说他要把工作表里的第6行 , 汇总在一起 。比如这样:
他说如果你没办法 , 那他只能手动来复制100个工作表 , 提取这数据了 。
我想了下说 , 我用VBA编程试试 。
差不多10分钟折腾 , 我把代码搞定了 。
Public Sub tiqu()’指定行遍历工作表提取
Application.ScreenUpdating = False
Dim LastRow As Integer
Dim sh As Worksheet
Set sh = Worksheets.Add ‘新建工作表
【怎么利用ExcelVBA解决棘手的数据提取问题】Set sh = ActiveSheet’为当前工作表
sh.Name = "sheet1"
Sheets(3).Range("b5:i5").Copy Destination:=Sheets("sheet1").Range("b1") ‘表头
Sheets(3).Range("a6:i6").Copy Destination:=Sheets("sheet1").Range("a2") ‘复制
For i = 4 To Sheets.Count ‘遍历工作表
LastRow = Sheets("sheet1").Cells(Rows.Count, 1).End(xlUp).Row ‘判定最后非空行
Sheets(i).Range("a6:i6").Copy Destination:=Sheets("sheet1").Range("a" & LastRow).Offset(1, 0) ‘复制到特定非空行的下一行
Next
MsgBox "处理完毕"
Application.ScreenUpdating = True
End Sub
他按alt+F11,把代码贴入模块 , 点运行就行了 。就是要他的结果 。
我来解释下我的思路原理:我的解决方案 。遍历工作表 , 提取每个工作表的第6行 , 复制到sheet1里的A2开始 , 难点1是偏移 , 用offset 。难点2 , 判断非空的最后一行 , 用en那个100个工作表 , 1分钟内运行完 。如果复制粘贴100次 , 大家试下就知道要多久了 , 起码我肯定你的手已经废掉了 , 哈哈 。
哈哈 , 本贴结束.

    推荐阅读