将数据粘贴到输入表的最后一行

时间:2017-09-06 01:35:49

标签: excel vba excel-vba

我正在创建一个宏,它从多个工作表上的多个列中提取数据,并将所有数据组织到一个工作表中。

我的代码是:

Private Sub Update_Click()

    Application.ScreenUpdating = False
    Application.Calculation = xlCalculationManual

    Dim path As String, fileName As String
    Dim lastRowInput As Long, lastRowOutput As Long, rowCntr As Long, lastColumn As Long
    Dim inputWS1 As Worksheet, inputWS2 As Worksheet, outputWS As Worksheet

    'set your sheets here
    Set inputWS1 = ThisWorkbook.Sheets("Universal")
    Set inputWS2 = ThisWorkbook.Sheets("Geovera")
    Set outputWS = ThisWorkbook.Sheets("Carriers")


    rowCntr = 1

    'get last rows from both sheets
    lastRowUniversal = inputWS1.Cells(Rows.Count, "A").End(xlUp).Row
    lastRowGeovera = inputWS2.Cells(Rows.Count, "F").End(xlUp).Row
    LastRowPolicy = outputWS.Cells(Rows.Count, "B").End(xlUp).Row + 1
    lastRowOutput = outputWS.Cells(Rows.Count, "A").End(xlUp).Row
    lastColumn = inputWS1.Cells(1, Columns.Count).End(xlToLeft).Column

    'Universal
    inputWS1.Range("A4:A" & lastRowUniversal).Copy outputWS.Range("B2")
    inputWS1.Range("B4:B" & lastRowUniversal).Copy outputWS.Range("C2")
    outputWS.Range("E2:E" & (lastRowUniversal - 2)).Value = inputWS1.Name
    inputWS1.Range("J4:J" & lastRowUniversal).Copy outputWS.Range("G2")
    outputWS.Range("G2:G" & (lastRowUniversal - 2)).Value = Evaluate("=IF(ISNUMBER(G2:G" & (lastRowUniversal - 2) & "),DATE(YEAR(G2:G" & (lastRowUniversal - 2) & ")-1,MONTH(G2:G" & (lastRowUniversal - 2) & "),DAY(G2:G" & lastRowUniversal & ")),G2:G" & (lastRowUniversal - 2) & ")")
    inputWS1.Range("G4:G" & lastRowUniversal).Copy outputWS.Range("H2")

    'Geovera
    inputWS2.Range("F2:F" & lastRowOutput).Copy outputWS.Range("B65536").End(xlUp).Row

    Application.ScreenUpdating = True
    Application.Calculation = xlCalculationAutomatic 
End Sub

我完成了将一张工作表迁移到有组织的主工作表的工作。

当我开始设置第二张纸时,我注意到它会覆盖第一张纸上的数据。我想要一个代码,将数据粘贴到行的第一个空白处。

我的错误就在这一行:

inputWS2.Range("F2:F" & lastRowOutput).Copy outputWS.Range("B65536").End(xlUp).Row

仍然没有。但是我希望F列中的数据移动到主页上的B列,而不删除我在前一页上已复制的内容。

请帮忙

1 个答案:

答案 0 :(得分:1)

而不是

inputWS2.Range("F2:F" & lastRowOutput).Copy outputWS.Range("B65536").End(xlUp).Row

尝试

inputWS2.Range("F2:F" & lastRowGeovera).Copy outputWS.Range("B" & lastRowUniversal - 1)