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

时间:2013-09-17 15:54:21

标签: excel vba copy paste

我正在尝试编写一个将我的所有工作表复制到一个工作表中的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的新手。我猜我不明白粘贴是如何正常工作的?

2 个答案:

答案 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)

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

我的工作簿里有两张空白的工作表。一个被称为模板,一个结果。我所做的是添加,如果循环忽略这两个页面。似乎因为那两张空白纸张存在,我正在添加额外的空格。

相关问题