宏:从两个工作表中复制数据并在第三个中连接在一起

时间:2018-06-06 18:25:33

标签: vba excel-vba append excel

我的excel文件有多个标签。其中一个表格是"员工访问安排"另一个是" IERWAA Lookup Arranged"。这两张纸都有相同的数据(列A到J),但它们有不同的来源(这就是为什么它们在两个单独的纸张中)。标题位于第1行,行数不固定。

我有第三个标签" Master"其中我希望这两个选项卡中的数据显示为相互附加。第1行将包含标题,对于所有3张标题都是相同的。

我写了一个宏,但它只是复制标题而不是数据。

Dim Sht As Worksheet
For Each Sht In ActiveWorkbook.Worksheets
    If Sht.Name = "Employee Access Arranged" Or Sht.Name = "IERWAA Lookup
    Arranged" Then
    Sht.Select

    LastRow = Range("A6553").End(xlUp).Row
    Range("A2", Cells(LastRow, "J")).Copy
    Sheets("Master").Select
    Range("A6553").End(xlUp).Offset(1, 0).Select
    ActiveSheet.Paste

Else
End If
Next Sh

有人可以协助我如何使其工作从两张纸而不是标题中复制数据。此外,由于行数发生变化,我希望它能够动态地自动拾取最后一行。

请注意:这不是另一个问题的重复。我不希望只匹配两个工作表中的值,而是两个工作表中的所有值。此外,问题是独特的,因为最后一栏" J"在大多数情况下可能没有值,但仍需要复制整个列

提前谢谢。

1 个答案:

答案 0 :(得分:0)

脏兮兮的走出我的头顶:

dim i as long, lrs as long, lrd as long
for i = 1 to sheets.count
    if not sheets.name="Master" then 
        with sheets(i)
            lrs = .cells(.rows.count,1).end(xlup).row
            .range(.cells(2,"A"),.cells(lrs,"J")).copy
        end with
        with sheets("Master")
            lrd = .cells(.rows.count,1).end(xlup).row
            .cells(lrd+1,1).paste
        end with
    end if
next i

EDIT1:

清理代码以适用于两个指定的工作表:

Dim i As Worksheet, arr As Variant, lrs As Long, lrd As Long
arr = Array("Employee Access Arranged", "IERWAA Lookup Arranged")
For Each i In Sheets(arr)
    With i
        lrs = .Cells(.Rows.Count, 1).End(xlUp).Row
        .Range(.Cells(2, "A"), .Cells(lrs, "J")).Copy
    End With
    With Sheets("Master")
        lrd = .Cells(.Rows.Count, 1).End(xlUp).Row
        .Range(.Cells(lrd + 1, "A"), .Cells(lrd + 1 + lrs, "J")).PasteSpecial xlValues
    End With
Next i