2012-10-11 58 views
10

Esta es una pregunta simple que no puedo responder.Cómo alinear duplicados en las mismas filas en Excel

que tienen dos columnas como estos en Excel:

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

que desea ordenar las dos columnas para que los mismos valores se alinean en las mismas filas de dos columnas, tales como:

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

Hasta ahora, he probado el VBA siguiente código:

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 

Pero este código ju st ayuda a encontrar los duplicados y no puede colocar los duplicados en las mismas filas en las dos columnas.

Me pregunto si ustedes pueden ayudar un poco?

Muchas gracias.

Respuesta

30

sin VBA

  • insertar una columna en blanco en la columna B
  • en B1 poner =IF(ISNA(MATCH(A1,C:C,0)),"",INDEX(C:C,MATCH(A1,C:C,0))) y copiar abajo
  • copiar y pegar de nuevo la columna B sobre sí mismo como valores para eliminar las fórmulas

En 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

¡Excelente! Su código VBA simplemente hace el truco. Muchas gracias a ti. –

-1

Sin VBA

  • en C1 poner = BUSCARV (A: A, B: B, 1)
  • si tiene varias columnas, en E1 poner = BUSCARV (A: A , B: D, 2) .... el último dígito debe cambiar a 1 (col B), 2 (col C) 3 (Col D) en consecuencia.

Usted tiene que copiar y pegar esto para cada matriz que busca en las columnas separadas en consecuencia, pero usted debería ser capaz de copiar y pegar en una columna fácilmente

Espero que esto ayude. Por favor, hágamelo saber si usted tiene alguna pregunta

Cuestiones relacionadas