Excel - копирование диапазона (несколько строк), вставка и конец другого листа - PullRequest
0 голосов
/ 04 августа 2020

Мне нужно скопировать диапазон sheet1 ("Assembly1") и вставить его после последней строки sheet2. Я могу найти и идентифицировать последний ряд. Я могу скопировать и вставить одну строку. Но я не могу разобрать несколько строк. Я не программист, я просто использую код и полагаю, что для этого нужна какая-то форма l oop, которую я не могу понять.

Этот код работает для диапазона одной строки (Range = "a3"), но не работает когда это (Range = "a3:f3"), я полагаю, это потому, что мне, вероятно, нужно посчитать диапазон, а затем вставить его несколько раз. Но я действительно мог бы использовать руку с этим.

Dim LRow As Long
        
LRow = Sheets("Sheet1").Range("ag" & Rows.Count).End(xlUp).Row
MsgBox LRow 'verifies I found the last row correctly

With Worksheets("sheet1")
.Range("assem1").EntireRow.Copy
End With

With Worksheets("sheet2")
.Rows(LRow).Insert Shift:=x1down

End With

Ответы [ 2 ]

0 голосов
/ 04 августа 2020

Что насчет этого? Попробуйте либо / поиграйте. Они ВСЕ работают.

Это будет работать для любого диапазона, который вы 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
0 голосов
/ 04 августа 2020

Думаю, ты сможешь просто сделать это.

Dim LRow As Long
        
LRow = Sheets("Sheet2").Range("ag" & Rows.Count).End(xlUp).Row
MsgBox LRow 'verifies I found the last row correctly

With Worksheets("sheet1")
    .Range("assem1").EntireRow.Copy Worksheets("sheet2").range("A" & LRow+1)
End With
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...