Что насчет этого? Попробуйте либо / поиграйте. Они ВСЕ работают.
Это будет работать для любого диапазона, который вы sh копируете и вставляете. Просто замените "AG2:AG" & DLR
(последняя строка) на "AG2:AI" & DLR
, например (сделано для вас в третьем макросе)
Sub cp()
Dim DLR As Long, WLR As Long
DLR = Sheets("Sheet1").Range("D100000").End(xlUp).Row
MsgBox DLR 'verifies I found the last row correctly
WLR = Sheets("Sheet2").Range("D100000").End(xlUp).Row
Sheets("Sheet1").Range("AG2:AG" & DLR).Copy Destination:=Sheets("Sheet2").Range("A" & WLR + 1)
End Sub
или
Чтобы выглядеть более профессионально:
Sub cp()
Dim DLR As Long, WLR As Long
DLR = Sheets("Sheet1").Range("AG" & Rows.Count).End(xlUp).Row
MsgBox DLR 'verifies I found the last row correctly
WLR = Sheets("Sheet2").Range("A" & Rows.Count).End(xlUp).Row
Sheets("Sheet1").Range("AG2:AG" & DLR).Copy Destination:=Sheets("Sheet2").Range("A" & WLR + 1)
End Sub
Я просто взял код, который нашел здесь , и адаптировал его для вашего Sheet1 / Sheet 2 и Doing what you want. Он работает.
3-й макрос:
Sub cp()
'Find Last Row
Dim DLR As Long, WLR As Long
DLR = Sheets("Sheet1").Range("AG" & Rows.Count).End(xlUp).Row
MsgBox DLR 'verifies I found the last row correctly in sheet1
WLR = Sheets("Sheet2").Range("A" & Rows.Count).End(xlUp).Row
MsgBox WLR 'verifies I found the last row correctly in sheet2
Sheets("Sheet1").Range("AG2:AI" & DLR).Copy Destination:=Sheets("Sheet2").Range("A" & WLR + 1)
End Sub