Копировать значения ячеек из одного листа книг Excel в другой, когда значение ячейки совпадает в той же строке - PullRequest
0 голосов
/ 31 мая 2019

У меня есть две превосходные книги, скажем, wb01 и wb02. Предположим, у них есть только один лист, sh01 и sh02 соответственно.

Мне нужно синхронизировать листы (sh01 и sh02) путем копирования значений ячеек (столбцы имени и фамилии) из sh01 в sh02 при совпадении столбца «Id».

Пример

sh01 в wb01

Id | name     | surname  | Dept
10 | John     | McCoy    | Logistics
21 | Liam     | Alloy    | Administration
40 | Peter    | Gregor   | Finance
42 | Albert   | Kein     | Business
50 | Kelly    | Braxton  | Logistics
60 | Isabella | O'Neill  | Finance

sh02 в wb02

Id | name   | surname   | ext.
10 | David  | McCoy     | 1004
23 | Bren   | Summer    | 1230
40 | George | Brown     | 2400
42 | Astrid | Anderson  | 3312
50 | Kelly  | Braxton   | 1139
51 | Evelyn | Connor    | 4532

Мне не нужно копировать эти значения ячеек из sh02 в sh01, только из sh01 в sh02. Также, если значение ячейки «Id» существует в wb01, но не в sh2, имя и фамилию значений ячейки следует скопировать в sh02 как новую строку, а остальные поля должны быть пустыми / пустыми в sh02.

Принимая во внимание два выше листа, после процесса копирования sh02 должно быть следующим:

Id | name     | surname   | ext.
10 | John     | McCoy     | 1004
21 | Liam     | Alloy     | 
23 | Bren     | Summer    | 1230
40 | Peter    | Gregor    | 2400
42 | Albert   | Kein      | 3312
50 | Kelly    | Braxton   | 1139
51 | Evelyn   | Connor    | 4532
60 | Isabella | O'Neill   | 

Этот процесс копирования должен выполняться по требованию, я имею в виду, когда пользователь нажимает кнопку из sh02 в wb02. При нажатии кнопки будет выполнен макрос в sh02, чтобы начать процесс копирования с sh01 до sh02.

1 Ответ

1 голос
/ 31 мая 2019

Вы буквально не предоставили ни одного кода, который пытались использовать для этого, больше людей с радостью помогут, если вы хотя бы попытаетесь его кодировать ... Тем не менее, вы не указали имена своих листов,Вот код, который вы можете поставить на тест.

Sub CopyValue

Dim Wb1 As Workbook, wb2 As Workbook, lastrow As Long, lastrow2 As Long, counter As Integer

counter = 0
Set wb1 = Workbooks("wb01")
Set wb2 = Workbooks("wb02")
lastrow = wb1.Range("A" & .Rows.Count).End(xlUp).Row
lastrow2 = wb2.Range("A" & .Rows.Count).End(xlUp).Row

For x = 2 To lastrow
    For y = 2 To lastrow2
    If wb1.Sheets("abc").Cells(x,1).Value = wb2.Sheets("def").Cells(y,1).Value Then
        wb2.Sheets("def").Cells(y,2).Value =    wb1.Sheets("abc").Cells(x,2).Value
        wb2.Sheets("def").Cells(y,3).Value =    wb1.Sheets("abc").Cells(x,3).Value
    Else
        counter= counter +1
        wb2.Sheets("def").Cells(lastrow+counter,1).Value = wb1.sheets("abc").Cells(x,1).Value
        wb2.Sheets("def").Cells(lastrow+counter,2).Value = wb1.sheets("abc").Cells(x,2).Value
        wb2.Sheets("def").Cells(lastrow+counter,3).Value = wb1.sheets("abc").Cells(x,3).Value
    End If
Next y
Next x
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...