-1

У меня есть две колонки в листе 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.
Поэтому я должен отделить эти записи от столбца А.

Аналогично, мудрые записи 409014007285 присутствуют только в столбце B, но не в A.
Также есть две записи 174 в столбце B, но только одна запись в столбце 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 ответ1

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

EDIT # 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

Макросы должны быть включены, чтобы это работало!

EDIT # 2

Этот макрос, как и первый, будет обрабатывать несколько вхождений одного и того же значения в обоих столбцах A и B

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .