允许将数据附加到另一个工作簿中的摘要表

时间:2013-10-22 11:32:19

标签: excel vba excel-vba

我有这个代码,它将来自三个工作表的数据附加到摘要表中,但是在执行时它将从表1和表2中的13行中的12行和从表3中的十三行到摘要我也希望这可以通过发送到不同工作簿中的摘要表

Sub SummurizeSheets()
Dim ws As Worksheet

Application.ScreenUpdating = False
Sheets("Summary").Activate

For Each ws In Worksheets
    If ws.Name <> "Summary" Then
        ws.Range("D2:D6, D8:D15").Copy
        Worksheets("Summary").Cells(Rows.Count, 4).End(xlUp).Offset(0, 0).PasteSpecial (xlPasteValues)
    End If
Next ws
End Sub

1 个答案:

答案 0 :(得分:1)

Offset(0,0)更改为Offset(1,0)。发生的不是它复制12行,而是从前一个块的末尾开始粘贴后续块。也就是说,第一个块粘贴到D1:D13,第二个块粘贴到D13:D26。通过使用Offset(1,0),将从第一个空单元格(即D14)开始粘贴第二个块。

您可以将结果放在新工作簿中,只需在代码中创建并在粘贴中引用它,例如:

Option Explicit

Sub SummurizeSheets()
    Dim ws As Worksheet
    Dim currentWB As Workbook: Set currentWB = ActiveWorkbook
    Dim newWB As Workbook: Set newWB = Application.Workbooks.Add

    newWB.Worksheets(1).Name = "Summary"

    For Each ws In currentWB.Worksheets
        ws.Range("D2:D6, D8:D15").Copy
        With newWB.Worksheets("Summary").Cells(Rows.Count, 4).End(xlUp)
            If IsEmpty(.Value) Then
                .PasteSpecial (xlPasteValues)
            Else
                .Offset(1, 0).PasteSpecial (xlPasteValues)
            End If
        End With
    Next ws
End Sub
已更新

编辑以粘贴到列中的第一个空单元格,即使这是第1行。