¿Cómo encontrar filas con columnas duplicadas en Excel? [duplicar]

0

Esta pregunta ya tiene una respuesta aquí:

Tengo una hoja de cálculo grande con posibles filas duplicadas. Sin embargo, solo me importa hacer coincidir algunas de las columnas como se resalta en amarillo a continuación.

ingrese la descripción de la imagen aquí

Entonces mi pregunta es: ¿cómo puedo buscar duplicados en solo columnas particulares de una fila y cuando encuentro una coincidencia, resaltarlos?

blarg
fuente
3
Pregunta bastante irónica, teniendo en cuenta que se ha hecho muchas veces .
Raystafarian
1
Además, dejaré esto aquí.
Raystafarian
1
Si la fila 4 era Blaaah | 2 | Don't careentonces, ¿supongo que no se considera un duplicado?
Dave
1
@DaveRook ¿Dónde menciono que quiero eliminarlos en la pregunta?
blarg 02 de
1
@blarg, para ser justos, no lo hiciste, pero creo que hubo algunas personas que pensaron eso, ¡incluyéndome a mí, Raystafarian y smc! De cualquier manera, publiqué una respuesta que hace lo que quieres
Dave

Respuestas:

1

Esto hace exactamente lo que desea, en función de la captura de pantalla que ha realizado

antes de

ingrese la descripción de la imagen aquí

Y después de hacer clic en el botón "resaltar los engaños"

ingrese la descripción de la imagen aquí

La parte superior es el bit que puedes personalizar. En este momento, estoy viendo Col A y B, pero es posible que desee actualizar eso para ver Cols B y C o A y D, etc.

También proporcioné detalles y un enlace para afectar el color de resaltado (nuevamente, vea los comentarios en el código)

Sub HighlightDuplicates()

    Dim transparent As Integer
    transparent = -4142 

    Dim yellow As Integer
    yellow = 27 ' colour index, see http://dmcritchie.mvps.org/excel/colors.htm for more details about setting the colour

    Dim column1 As String
    column1 = "A" 'Update me if you don't want to check for dupes in the A column

    Dim column2 As String
    column2 = "B" 'Update me if you don't want to check for dupes in the B column

    Dim endOfRows As Boolean
    moreRows = True

    Dim currentCell As Integer
    currentCell = 0

    Do While (moreRows)

        currentCell = currentCell + 1

        Dim aValue As String
        Dim bValue As String

        aValue = Worksheets("Sheet1").Range(column1 & currentCell).Value
        bValue = Worksheets("Sheet1").Range(column2 & currentCell).Value

        'check it isn't already coloured
        If (Worksheets("Sheet1").Range(column1 & currentCell).Interior.ColorIndex = transparent) Then

            Dim moreInnerRows As Boolean
            moreInnerRows = True

            Dim currentInnerCell As Integer
            currentInnerCell = currentCell

            Dim isDupe As Boolean
            isDupe = False
            'Now to loop through the other rows

            Do While (moreInnerRows)
                currentInnerCell = currentInnerCell + 1

                If (Worksheets("Sheet1").Range(column1 & currentInnerCell).Value = "" And Worksheets("Sheet1").Range(column2 & currentInnerCell).Value = "") Then
                    Exit Do
                End If

                If Worksheets("Sheet1").Range(column1 & currentInnerCell).Value = aValue And Worksheets("Sheet1").Range(column2 & currentInnerCell).Value = bValue Then
                    isDupe = True
                    Worksheets("Sheet1").Range(column1 & currentInnerCell).Interior.ColorIndex = yellow
                    Worksheets("Sheet1").Range(column2 & currentInnerCell).Interior.ColorIndex = yellow

                End If

            Loop

            If (isDupe = True) Then
                'Now we mark the original row as a dupe
                Worksheets("Sheet1").Range(column1 & currentCell).Interior.ColorIndex = yellow
                Worksheets("Sheet1").Range(column2 & currentCell).Interior.ColorIndex = yellow

            End If

        End If

        If (Worksheets("Sheet1").Range(column1 & currentCell).Value = "" And Worksheets("Sheet1").Range(column2 & currentCell).Value = "") Then
            Exit Do
        End If


    Loop

End Sub
Dave
fuente
1

Agregaría una nueva columna y usaría la columna CONCATENAR para combinar las columnas segunda y tercera. Si su primera celda es A1, la fórmula sería:

=CONCATENATE(B1," ",C1)

Luego, desde la cinta Inicio, iría a Formato condicional / Resaltar reglas de celdas / Valores duplicados.

Aquí hay una foto del resultado final:

ingrese la descripción de la imagen aquí

Mike Honey
fuente
alternativa a concatenar es =B1 & C1(más rápido de escribir)
matt wilkie
Lo importante no es la receta, que se romperá con el tiempo a medida que cambie el software, sino la idea central: es mucho más fácil encontrar duplicados en 1 columna que muchos, así que combine los muchos con 1 primero. Esto también puede aplicarse a datos que no son de tabla e incluso a datos grandes, como imágenes. En este último caso, no es práctico combinarlos todos en un solo binario grande, así que use algo como MD5sum para identificar cada uno de manera única y luego agregue esos en su lugar.
Matt Wilkie