Excel 从两列中删除公共元素

Excel 从两列中删除公共元素,excel,vba,Excel,Vba,我有两个专栏。一个有400个元素,一个有600个元素。第二个列表中的600个元素中有400个在第一个列表中。我想删除所有这些元素,最后得到一个200个元素的列表 设置差异 如何在Excel中实现这一点?假设您的A列中的“400”列表(表“realizada”)和B列中的“600”列表(表“completa”): 所以你想“清理”更大的列表??是的,我们有两个列表。一个是要参观的地方,一个是我们已经参观过的地方。它们位于excel手册的两个不同页面上,我们希望从仍然需要访问的地方列表中删除所有已经

我有两个专栏。一个有400个元素,一个有600个元素。第二个列表中的600个元素中有400个在第一个列表中。我想删除所有这些元素,最后得到一个200个元素的列表

设置差异

如何在Excel中实现这一点?

假设您的
A列中的“400”列表(表“realizada”)和
B列中的“600”列表(表“completa”):


所以你想“清理”更大的列表??是的,我们有两个列表。一个是要参观的地方,一个是我们已经参观过的地方。它们位于excel手册的两个不同页面上,我们希望从仍然需要访问的地方列表中删除所有已经访问过的地方。如果这听起来很愚蠢,我很抱歉。这两列在两个不同的表中,列表A称为realizada,有400个元素,列表B称为completa,有600个元素。我需要使用realizada中的数据清理“completa”,如何修改您的代码以适应这种情况。它似乎只适用于同一工作表中的列。
Sub test()
    Dim lastrow As Long
    Dim rngToDel As Range, c As Range
    Dim rng As Range

    Set rng = ThisWorkbook.Worksheets("realizada").Range("A:A")

    With ThisWorkbook.Worksheets("completa")
        lastrow = .Cells(.Rows.Count, "B").End(xlUp).Row

        For Each c In .Range("B1:B" & lastrow)
            If Not IsError(Application.Match(c.Value, rng, 0)) Then
                If rngToDel Is Nothing Then
                    Set rngToDel = c
                Else
                    Set rngToDel = Union(rngToDel, c)
                End If
            End If
        Next
    End With
    rngToDel.Select
    If Not rngToDel Is Nothing Then rngToDel.Delete Shift:=xlShiftUp
End Sub