与列进行比较,查找差异并将其粘贴到新列中的代码

时间:2019-06-20 19:21:25

标签: excel vba

我只是尝试比较AD列,看看A中是否有D中没有的值。然后,我要复制该值和相邻的单元格B,并将它们粘贴到列GH中。

例如,在照片中,预期结果将是wilsona中的G3Last, First2中的H3。行数将是可变的,并且AD可能永远不会具有相同的行数。

我只有下面的代码。问题在于,它仅将A1D1进行比较,而不是与D的整个范围进行比较:

Dim i As Integer
i = 1
For i = 3 To 20
    If (Range("A" & i).Select <> Range("D" & i).Select) Then
        Range("A" & i).Select
        Selection.Copy
        Range("G" & i).Select
        ActiveSheet.Paste
        Range("B" & i).Select
        Selection.Copy
        Range("H" & i).Select
        ActiveSheet.Paste
    End If
Next i

示例:

Example

1 个答案:

答案 0 :(得分:0)

这应该适合您的情况:

Sub Macro1()

Dim ws as Worksheet
set ws = ThisWorkbook.Worksheets("Compare")

Dim rngA As Range, rngD as Range, MySel as Range

Set rngA = ws.Range("A3", Range("A" & Rows.Count).End(xlUp))
Set rngD = ws.Range("D3", Range("D" & Rows.Count).End(xlUp))

For Each cell In rngA
    If IsError(Application.Match(cell.Value, rngD, 0)) Then
        If MySel Is Nothing Then
            Set MySel = cell.Resize(1,2)
        Else
            Set MySel = Union(MySel, cell.Resize(1,2))
        End If
    End If
Next cell

If Not MySel Is Nothing Then MySel.Copy Destination:= ws.Range("G3")
End Sub