我正在创建一个宏,它从多个工作表上的多个列中提取数据,并将所有数据组织到一个工作表中。
我的代码是:
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列,而不删除我在前一页上已复制的内容。
请帮忙
答案 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)