我正在尝试编写一个将我的所有工作表复制到一个工作表中的Excel宏。
所有工作表都是相同的,4列,每行的每个单元格都有数据。每张纸都有一个标题。我正在尝试将每个工作表中的预过滤数据复制到结果表中,每个工作表中的数据将堆叠在一起。
到目前为止,这就是我所拥有的,而且它几乎正在发挥作用。
Dim sh As Worksheet
Dim iRows As Long
iRows = 0
For Each sh In ActiveWorkbook.Worksheets
sh.Select
Range("A1").Select
Selection.Offset(1, 0).Select
Range(Selection, Selection.End(xlToRight)).Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Copy
Worksheets("Results").Select
Range("A1").Select
Selection.Offset(iRows, 0).Select
Selection.PasteSpecial Paste:=xlPasteValues
iRows = Worksheets("Results").UsedRange.Rows.Count
Next sh
我的偏移量不正确,当我复制下一张纸时,我复制了它在上一行复制的数据。
如果有人可以提供帮助,那将是很好的,如果你也可以解释我在这里做错了什么,这将是伟大的,因为我是excel和VBA的新手。我猜我不明白粘贴是如何正常工作的?
答案 0 :(得分:4)
Sub tgr()
Dim ws As Worksheet
Dim wsDest As Worksheet
Set wsDest = Sheets("Results")
For Each ws In ActiveWorkbook.Sheets
If ws.Name <> wsDest.Name Then
ws.Range("A2", ws.Range("A2").End(xlToRight).End(xlDown)).Copy
wsDest.Cells(Rows.Count, "A").End(xlUp).Offset(1).PasteSpecial xlPasteValues
End If
Next ws
End Sub
答案 1 :(得分:0)
我设法搞清楚了。我不确定我的代码是否理想,但我现在需要的是什么。
我的工作簿里有两张空白的工作表。一个被称为模板,一个结果。我所做的是添加,如果循环忽略这两个页面。似乎因为那两张空白纸张存在,我正在添加额外的空格。