Я пытаюсь скопировать данные из одного листа в другой пустой рабочий лист в книге. Он имеет три столбца, в которых я хочу выполнить поиск определенного значения «Единица» и просто скопировать все записи с похожими значениями «Единица» во второй лист с аналогичной структурой столбцов.Скопируйте данные из одного листа в другое по условию
**Doc_number** **Doc_version** **Unit**
43449 01 D013-LAG R
43450 02 D013-LAG R
43451 01 D013-DAMP
43452 02 D013-DAMP
Выход должен быть таким, если я предоставляю D013-LAG R в качестве входного значения;
**Doc_number** **Doc_version** **Unit**
43449 01 D013-LAG R
43450 02 D013-LAG R
Я хочу, чтобы вставить выбранный столбец до доставки листа, как если бы передать значение «блок» как «D03-LAG R», то выходной сигнал в файле поставки должен быть так же, как следующим образом;
Doc_version Unit
01 D013-LAG R
02 D013-LAG R
Это больше, как я хочу, чтобы выбрать всю строку, а затем вставить данные в другую таблицу по столбцам, которые я хочу. Я не хочу, чтобы вся строка была вставлена так, как есть.
У меня нет большого опыта работы в VBA и я уже пробовал выполнить код, который приводит к копированию последней записи, встречающейся в цикле. Вам нужен ваш совет.
Sub Row_Copy()
Dim sheet1 As Worksheet, sheet2 As Worksheet
Dim i As Integer, k As Integer
Dim Sheet1LR As Long, Sheet2LR As Long
Set sheet1 = Sheets("MASTER")
Set sheet2 = Sheets("DELIVERY")
Sheet1LR = Sheet1.Range("A" & Rows.Count).End(xlUp).Row + 1
Sheet2LR = Sheet2.Range("A" & Rows.Count).End(xlUp).Row + 1
i = 2
k = Sheet2LR
Do Until i = Sheet1LR
If Trim(sheet1.Cells(i, 26).Value) = "D013-LAG R" Then
With sheet1
.Range(.Cells(i, 1), .Cells(i, 26)).Copy
End With
With sheet2
.Cells(k, 1).PasteSpecial
.Cells(k, 1).Offset(1, 0).PasteSpecial
End With
End If
k = k + 1
i = i + 1
Loop
MsgBox (Complete)
ActiveWorkbook.Save
Application.ScreenUpdating = False
End Sub
Это последний код, который я использую;
Sub CommandButton1_Click()
Dim LSearchRow As Long
Dim LCopyToRow As Long
Dim CopyFromSht As Worksheet
Dim CopyToSht As Worksheet
Dim LCnt As Long
On Error GoTo Err_Execute
Set CopyFromSht = Workbooks("TestRow.xlsm").Sheets("MASTER")
Set CopyToSht = Workbooks("TestRow.xlsm").Sheets("DELIVERY")
With CopyFromSht
'Start search in row 4
LSearchRow = .Range("A" & Rows.Count).End(xlUp).Row
'Start copying data to row 2 in Sheet2 (row counter variable)
LCopyToRow = 2
For LCnt = 2 To LSearchRow
'If value in column Z = "Unit as needed", copy entire row to Sheet2
If .Range("Z" & LCnt).Value = "D013-LAG R" Then
'Select row in Sheet1 to copy
.Rows(LCnt).Copy Destination:=CopyToSht.Rows(LCopyToRow)
'Move counter to next row
LCopyToRow = LCopyToRow + 1
End If
Next LCnt
End With
Написать код, который вы пробовали до сих пор. – besciualex
Добро пожаловать в Monty для переполнения стека. Посмотрите, как спросить - http://stackoverflow.com/help/how-to-ask. «поиск и исследование». Существует множество фрагментов кода для копирования данных в Excel, из которых вы можете узнать. Например, для объединения данных http://stackoverflow.com/questions/6823009/excel-copy-data-from-multiple-worksheets и поиска данных, например. http://stackoverflow.com/questions/32252879/excel-vba-update-find-data-loop-through-multiple-worksheets-copy-range – micstr
Привет @besciualex Добавил код, с которым я играю. Но из этого я не могу извлечь необходимые данные в рабочий лист доставки – Monty