将所有工作表复制到一张表中

我正在尝试编写一个将所有工作表复制到一个工作表的Excelmacros。

所有的工作表都布置成相同的,每行的每个单元格中有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的人来说,这将是非常棒的。 我猜,我不明白如何正确的粘贴工作?

 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 

我设法弄清楚了。 我不确定我的代码是否理想,但现在我需要的是什么。

我的工作簿中有两张空白工作表。 一个被称为模板,一个结果。 我所做的是添加,如果循环忽略这两个页面。 看来,因为这两张空白纸存在,我join了额外的空间。