Excel VBA сравнить 2 столбца и список не совпадающих результатов - PullRequest
0 голосов
/ 09 апреля 2020

Я пытаюсь сравнить два столбца и получить несоответствующие результаты, перечисленные где-то еще.

До сих пор я придумал следующее:

Sub match_columns()
Dim i, Lastrow1, Lastrow3 As Integer
Dim found As Range

With Worksheets("sht1")

Lastrow1 = .Range("A" & Rows.Count).End(xlUp).Row
For i = 1 To Lastrow1

answer1 = .Range("A" & i).Value
Set found = Sheets("sht2").Columns("A:A").Find(what:=answer1)

    If found Is Nothing Then
        Set rngNM = .Range("A" & i.Row)
    Else
        Set rngNM = Union(rngNM, .Range("A" & i.Row))
    End If
Next i


End With

    If Not rngNM Is Nothing Then rngNM.Copy Worksheets("sht3").[A2]

    Worksheets("sht3").[A1] = "title"

    Lastrow3 = Sheets("sht3").Range("A" & Rows.Count).End(xlUp).Row

    Sheets("sht3").Range("A2:A" & Lastrow3).Copy



End Sub

В настоящее время я получаю «Ошибка времени выполнения 424; требуется объект» для следующего: Установите rngNM = .Range («A» & i.Row)

Где мой код неверен?

1 Ответ

1 голос
/ 09 апреля 2020

Попробуйте этот код

Sub Compare_Two_Columns()
    Dim ws As Worksheet, sh As Worksheet, out As Worksheet, c As Range, i As Long, m As Long, k As Long

    Application.ScreenUpdating = False
        Set ws = ThisWorkbook.Worksheets("Sheet1")
        Set sh = ThisWorkbook.Worksheets("Sheet2")
        Set out = ThisWorkbook.Worksheets("Sheet3")
        m = ws.Range("A" & Rows.Count).End(xlUp).Row
        ReDim a(1 To m)

        For i = 1 To m
            Set c = sh.Range("A:A").Find(What:=ws.Cells(i, 1).Value, LookAt:=xlWhole)
            If c Is Nothing Then k = k + 1: a(k) = ws.Cells(i, 1).Value
        Next I

        If k > 0 Then
            With out
                .Range("A1").Value = "Title"
                .Range("A2").Resize(k).Value = Application.Transpose(a)
            End With
        End If
    Application.ScreenUpdating = True

    MsgBox "Done...", 64
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...