Используйте макрос для сравнения столбцов в двух листах Excel и добавления совпадений на третий лист - PullRequest
0 голосов
/ 07 января 2020

Мне просто нужно иметь возможность совпадать, если идентификаторы в столбце «А» листа 1 совпадают в соответствующем столбце «А» листа 2, и просто вставить совпадения в столбец «А» на листе 3. Диапазон столбцов на листе 1 не совпадает с диапазоном столбца 2, и на листе 3 должны быть вставлены совпадения в каждую строку по мере их обнаружения (т.е. между ними не должно быть пустых строк). Мне не нужно ничего делать с номерами, которые не совпадают.

Я попытался изменить код из другого потока. Ловит несколько совпадений, но не все. Я предполагаю, что диапазоны неверны, но я не знаю, как кодировать это в VBA. Кроме того, в колонке есть пробелы, в которых должны быть размещены некоторые другие дубликаты. «Если найдено ничего, тогда x = 0» не является необходимым (и может даже вызывать вышеупомянутую ошибку), но если я это устраню, я получу ошибку несоответствия типов.

Sub matchPAs()

Dim x, i, total, fRow As Integer
Dim found As Range

total = Sheets(1).Range("A" & Rows.Count).End(xlUp).Row

For i = 1 To total
    match1 = Worksheets(1).Range("A" & i).Value
 Set found = Sheets(2).Columns("A:A").Find(what:=match1)
If found Is Nothing Then
    x = 0
Else
    fRow = Sheets(2).Columns("A:A").Find(what:=match1).Row
    Worksheets(3).Range("A" & i).Value = Worksheets(1).Range("A" & fRow).Value

 End If
Next i

End Sub

1 Ответ

0 голосов
/ 07 января 2020

немного логика c:

Sub matchPAs()
    Dim total As Long
    total = Sheets(1).Range("A" & Rows.Count).End(xlUp).Row

    Dim i As Long
    For i = 1 To total
        Dim match1 As Variant
        match1 = Worksheets(1).Range("A" & i).Value

        Dim found As Range
        Set found = Sheets(2).Columns("A:A").Find(what:=match1)
        If Not found Is Nothing Then
            Worksheets(3).Range("A" & Rows.Count).End(xlUp).Offset(1).Value = match1
        End If
    Next i
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...