В Рабочей тетради 1 у меня есть электронная таблица, которая отслеживает запасы мясных продуктов. Строка 1 используется для имен столбцов: «Номер отслеживания посылки» в столбце A и другие данные, связанные с посылкой в других столбцах (например, такие как «Дата экспорта», «Вес» и «Содержимое»).
Столбец I описывает «Содержимое» участка, и все эти участки содержат «Мясо».
Строки информации в этой электронной таблице были скопированы из Рабочей книги 2, в которой содержатся посылки, содержащие столбцы "Мясо", "Сыр", "Молоко" и "Яйца".
Оба рабочие книги имеют одинаковые имена столбцов в строке 1.
В рабочей книге 1 я обновляю данные для некоторых строк и хочу, чтобы изменение было применено в рабочей книге 2, скопировав строки рабочей книги 1 и вставив их в рабочую книгу. 2 в строках, где «номер отслеживания посылки» в столбце A совпадает.
Пока у меня есть код, чтобы скопировать все строки посылки "Мясо" из Рабочей книги 2 и вставить их в Рабочую книгу 1, но теперь мне нужна помощь в этой новой ситуации.
Программа запускается путем открытия Рабочей книги 2 и нажатия кнопки команды, которая открывает рабочую книгу 1 и начинает копирование строк в рабочую таблицу Мясо.
Вот оно:
Private Sub CommandButton1_Click()
Application.ScreenUpdating = False ' Screen Update application turned off in order to make program run faster
Dim y As Workbook '
Dim sh As Worksheet '
Set y = Workbooks.Open("\\SCF1\USERS-D\Robert\My Documents\Excel VBA code\Meat.xlsx") '
a = ThisWorkbook.Worksheets("Products").Cells(Rows.Count, 1).End(xlUp).Row
Set sh = Workbooks("Meat.xlsx").Worksheets("Meat")
With ThisWorkbook.Worksheets("Products")
For i = 2 To a ' value ''i'' is the column number
If ThisWorkbook.Worksheets("Products").Cells(i, 9).Value Like "*Meat*" And IsError(Application.Match(.Cells(i, "A").Value, sh.Columns("A"), 0)) Then ' this sets the condition for which the data can only be copied if the row has '' Meat '' included in the 9th column (substance) and if the row is not already copied in the Meat worksheet.
ThisWorkbook.Worksheets("Products ").Rows(i).Copy
Workbooks("Meat.xlsx").Worksheets("Meat").Activate
b = Workbooks("Meat.xlsx").Worksheets("Meat ").Cells(Rows.Count, 1).End(xlUp).Row
Workbooks("Meat.xlsx").Worksheets("Meat").Cells(b + 1, 1).Select
ActiveSheet.Paste
ThisWorkbook.Worksheets("Products").Activate
End If
Next
On Error Resume Next '1004 error kept appearing so this function allows us to continue to next step without error appearing
ThisWorkbook.Worksheets("Products").Cells(1, 1).Select
End With
MsgBox "All rows from Products worksheet have been copied."
Application.ScreenUpdating = True
End Sub
Любая помощь с благодарностью. Благодаря.