Скопируйте несколько строк с одного листа на другой лист, используя macro / vba

Мы просмотрели форум и поиграли с разными вариантами, но не нашли четкого соответствия моей проблеме:

Моя задача - скопировать данные с листа (называемого «workorders») на второй лист (называется «Задания»). Данные для копирования взяты изworkorders» лист начинается с диапазона ячеекE2, P2: S2 ”; а также копируется из каждой строки (в том же диапазоне) до столбца «P» пустой - (количество копируемых строк может меняться каждый раз, когда нам нужно запустить этот макрос, поэтому мы можемвыберите стандартный диапазон). Затем вставил вЗадания» рабочий лист, начиная с ячейки «A4”, Я'До сих пор мы использовали форум, чтобы успешно скопировать одну строку даты (из строки 2) - Я признаю, чтолегкая часть, и яМы использовали различные версии кода для достижения этой цели. Я'Я также попробовал некоторый код (который я нашел, посмотрев клип на YouTube и изменивhttp://www.youtube.com/watch?v=PyNWL0DXXtQ ), чтобы позволить мне запустить цикл, который повторяет процесс копирования для каждой требуемой строки в «workorders» лист, а затем вставляет данные в «назначения» лист - но это то, где я не понимаю, я думаю,м вдоль правильных линий и думаю, что яЯ не за горами, но любая помощь будет очень полезна.

Примеры кода ниже (только первые 2 копируют первую строку, третий пример, где ямы пытались зациклить и скопировать несколько строк:

Sub CopyTest1()
' CopyTest1 Macro
'copy data from workorders sheet
'Worksheets("workorders").Range("E2,P2,Q2,R2,S2").Copy
Worksheets("workorders").Range("E2, P2:S2").Copy
'paste data to assignments sheet
'sheets("assigments dc").Range("A4").Paste
Sheets("Assigments DC").Select
Range("A4").Select
ActiveSheet.Paste
Application.CutCopyMode = False
End Sub




Sub CopyTest2()
Sheets("workorders").Range("e2,p2,q2,r2,s2").Copy Sheets("assigments dc").Range("a4")
End Sub


Sub CopyTest3()
Dim xrow As Long
'Dim xrow As String
xrow = 2
Worksheets("workorders").Select
Dim lastrow As Long
lastrow = Cells(Rows.Count, 16).End(xlUp).Row
Do Until xrow = lastrow + 1
ActiveSheet.Cells(xrow, 16).Select
If ActiveCell.Text = Not Null Then
'Range("E2,P2,Q2,R2,S2").Copy
'Selection = Range("E2,P2,Q2,R2,S2").Copy
'Cells(xrow, 5).Copy
Cells(xrow, 5).Copy
Sheets("Assigments DC").Select
Range("A4").Select
ActiveSheet.Paste
Application.CutCopyMode = False
Sheets("workorders").Select
End If
xrow = xrow + 1
Loop
End Sub

Ответы на вопрос(3)

Ваш ответ на вопрос