如何从 Excel 工作表的两列中分离不相同的条目

如何从 Excel 工作表的两列中分离不相同的条目

我的 Excel 表中有两列,如下所示。

Column A    Column B
87            87
107           107
108           108
117           117
119           119
153           153
170           170
174           174
209           209
409106386989  409014007285
409110099164  174

这里 A 列和 B 列都包含 11 个条目。
现在我必须从两列中找出不相同的条目。
例如,条目 409106386989 和 409110099164 仅出现在 A 列中,而不出现在 B 列中。
所以我必须将这些条目从 A 列中分离出来。

同样,条目 409014007285 仅出现在 B 列中,而不出现在 A 列中。
此外,B 列中有两个条目 174,但 A 列中只有一个条目。
所以我必须将这两个条目,即 409014007285 和 174 从 B 列中分开。

因此输出应该如下所示。

    Column A               Column B       A but not B        B but not A
          87                     87      409106386989                174
         107                    107      409110099164       409014007285
         108                    108
         117                    117
         119                    119
         153                    153
         170                    170
         174                    174
         209                    209
409106386989           409014007285
409110099164                    174

我正在手动执行此过程,当条目数达到数千个时,这将花费很多时间。

是否可以通过运行一些代码(使用 VB 脚本)来做到这一点......?

答案1

尝试一下:

Sub GetUnique()
    Dim N As Long, M As Long, i As Long, K As Long, L As Long
    Dim r As Range
    N = Cells(Rows.Count, "A").End(xlUp).Row
    M = Cells(Rows.Count, "B").End(xlUp).Row

    K = 1
    For i = 1 To N
        v = Cells(i, "A").Value
        Set r = Range(Cells(1, 2), Cells(M, 2)).Find(v)
        If r Is Nothing Then
            Cells(K, "C").Value = v
            K = K + 1
        End If
    Next i

    K = 1
    For i = 1 To M
        v = Cells(i, "B").Value
        Set r = Range(Cells(1, 1), Cells(N, 1)).Find(v)
        If r Is Nothing Then
            Cells(K, "D").Value = v
            K = K + 1
        End If
    Next i

End Sub

编辑#1

该宏处理列中的数据A&B. 输出数据按列放置C&D.

要了解有关宏的更多信息,请参阅:

http://www.mvps.org/dmcritchie/excel/getstarted.htm

http://msdn.microsoft.com/en-us/library/ee814735(v=office.14).aspx

必须启用宏才能使其工作!

编辑#2

此宏与第一个宏类似,将处理两列中多次出现的相同值A&

Sub FindNonDuplicates()
    Range("A:A").Copy Range("C1")
    Range("B:B").Copy Range("D1")
    Dim nC As Long, nD As Long, v As Variant
    Dim i As Long, j As Long
    nC = Cells(Rows.Count, "C").End(xlUp).Row
    nD = Cells(Rows.Count, "D").End(xlUp).Row

    For i = nC To 1 Step -1
        v = Cells(i, "C").Value
        For j = 1 To nD
            If v = Cells(j, "D").Value Then
                Cells(i, "C").Delete Shift:=xlUp
                Cells(j, "D").Delete Shift:=xlUp
                nD = nD - 1
                GoTo qwerty
            End If
        Next j
qwerty:
    Next i
End Sub

相关内容