2012-10-11 6 views
10

To jest proste pytanie, na które nie mogę odpowiedzieć.Jak wyrównać duplikaty w tych samych wierszach w Excelu

Mam dwie kolumny jak te w Excelu:

Col1 Col2 
A  C 
B  I 
C  E 
D  D 
E  A 
F  F 
G  B 
H  
I  

Chcę posortować dwie kolumny tak, że te same wartości są ustawione na tych samych rzędach w dwóch kolumnach, takich jak:

Col1 Col2 
A  A 
B  B 
C  C 
D  D 
E  E 
F  F 
G  
H  
I  I 
K  

dotychczas próbowałem następujący kod VBA:

Sub HighlightDups() 
    Dim i, LastRowA, LastRowB 
    LastRowA = Range("A" & Rows.Count).End(xlUp).Row 
    LastRowB = Range("B" & Rows.Count).End(xlUp).Row 
    Columns("A:A").Interior.ColorIndex = xlNone 
    Columns("B:B").Interior.ColorIndex = xlNone 
    For i = 1 To LastRowA 
     If Application.CountIf(Range("B:B"), Cells(i, "A")) > 0 Then 
      Cells(i, "A").Interior.ColorIndex = 36 
     End If 
    Next 
    For i = 1 To LastRowB 
     If Application.CountIf(Range("A:A"), Cells(i, "B")) > 0 Then 
      Cells(i, "B").Interior.ColorIndex = 36 
     End If 
    Next 
End Sub 

ale ten kod ju st pomaga znaleźć duplikaty i nie może umieścić duplikatów w tych samych wierszach w dwóch kolumnach.

Zastanawiam się, czy możecie dać małą pomoc?

Wielkie dzięki.

Odpowiedz

30

bez VBA

  • wstawić pustą kolumny do kolumny B
  • w B1 umieścić =IF(ISNA(MATCH(A1,C:C,0)),"",INDEX(C:C,MATCH(A1,C:C,0))) i skopiuj
  • skopiować i wkleić z powrotem kolumnę B na siebie jako wartości usunąć formuły

W języku VBA

Sub Macro1() 
    Dim rng1 As Range 
    Set rng1 = Range([a1], Cells(Rows.Count, "A").End(xlUp)) 
    rng1.Offset(0, 1).Columns.Insert 
    With rng1.Offset(0, 1) 
     .FormulaR1C1 = _ 
     "=IF(ISNA(MATCH(RC[-1],C[1],0)),"""",INDEX(C[1],MATCH(RC[-1],C[1],0)))" 
     .Value = .Value 
    End With 
End Sub 
+1

Znakomity! Twój kod VBA wystarczy. Wielkie dzięki dla ciebie. –

-1

Bez VBA

  • w C1 umieścić = WYSZUKAJ.PIONOWO (A: A, B: B, 1)
  • jeśli masz kilka kolumn, w E1 umieścić = WYSZUKAJ.PIONOWO (A: , B: D, 2) .... ostatnia cyfra powinna zmienić się odpowiednio na 1 (col B), 2 (col C) 3 (Col D).

Będziesz musiał skopiować i wkleić do każdej tablicy szukasz w związku z powyższym oddzielnych kolumnach, ale powinieneś być w stanie skopiować i wkleić w dół kolumny łatwo

nadzieję, że to pomaga. Daj mi znać, jeśli masz jakieś pytania.