Cómo eliminar filas duplicadas basadas en algunas columnas

11

Tengo una hoja de Excel que contiene filas duplicadas

Quiero eliminar una fila si sus columnas ACDEF son las mismas (Ignorar B al calcular duplicados, pero eliminarlo al eliminar una fila)

Por el momento, ignora B durante la comparación y la eliminación.

usuario33949
fuente
¿Se puede agregar una captura de pantalla con un antes y un después deseado? Estoy luchando por imaginar lo que necesitas (lo siento)
Dave
Entonces, ¿cualquier valor duplicado en las columnas A, C, D, E, F dará como resultado una eliminación completa de la fila, manteniendo la primera instancia del duplicado? ¿Qué sucede si A1 coincide con A2, pero C2 coincide con C3, se elimina la fila 2?
Raystafarian

Respuestas:

18

En Excel 2013

  1. Seleccionar todos los datos
  2. Seleccione la pestaña Datos -> Eliminar duplicados
  3. Marque 'Mis columnas tienen encabezados' si sus datos tienen encabezados de columna.
  4. Desmarca todas las columnas que NO te gustaría usar en comparación
  5. presiona OK

Hecho

usuario33949
fuente
No, esto busca filas que son similares a otras filas. También pensé en esto, pero es una solución a una pregunta diferente :)
Garrulinae
@Garrulinae ¿Qué estás diciendo? ¿Puedes explicar cómo esto no funciona? Parece la respuesta correcta a la pregunta de OP.
TheCrazyProgrammer
@TheCrazyProgrammer: al ver esto más de 2 años después, puedo ver que la pregunta del OP " Quiero eliminar una fila si sus columnas ACDEF son las mismas " se puede interpretar de dos maneras diferentes. Supuse que si estas columnas son iguales entre sí en esta fila . Esta respuesta supone que significa que si los valores en las columnas de esta fila son los mismos que en otra fila . En retrospectiva, esta suposición parece haber sido correcta, especialmente porque se ha marcado como la respuesta correcta.
Garrulinae
@Garrulinae Gotcha. Ahora vi y entendí tu respuesta. En una nota al margen, me sorprende que la funcionalidad requerida por OP (y por mí) exista como un botón directo en Excel, pero googlear le da un montón de artículos haciendo cosas complicadas que por un momento me hicieron dudar de esta respuesta.
TheCrazyProgrammer
@TheCrazyProgrammer, también tengo una nota al margen: ¡me acabo de dar cuenta de que fue el OP quien publicó esta respuesta! Obviamente es la respuesta correcta, pero es una pena que la pregunta no fuera más clara.
Garrulinae
1

Si lo entendí correctamente, dadas las filas 1 y 2, desea eliminar una fila 2 si y solo si A1 = A2, C1 = C2, D1 = D2, E1 = E2 y F1 = F2.

Esto es lo que se me ocurrió. Probablemente podría ser más corto pero hace el truco:

Sub DeleteDuplicate()
Dim current As String
ActiveSheet.Range("A1").Activate
Do While ActiveCell.Value <> ""
    current = ActiveCell.Address
    ActiveCell.Offset(1, 0).Activate
    Do While ActiveCell.Value <> ""
        If ((ActiveSheet.Range(current).Value = ActiveCell.Value) And (ActiveSheet.Range(current).Offset(0, 2).Value = ActiveCell.Offset(0, 2).Value) And (ActiveSheet.Range(current).Offset(0, 3).Value = ActiveCell.Offset(0, 3).Value) And (ActiveSheet.Range(current).Offset(0, 4).Value = ActiveCell.Offset(0, 4).Value) And (ActiveSheet.Range(current).Offset(0, 5).Value = ActiveCell.Offset(0, 5).Value)) Then
            ActiveSheet.Rows(ActiveCell.Row).Delete
        Else
        ActiveCell.Offset(1, 0).Activate
        End If
    Loop
    ActiveSheet.Range(current).Offset(1, 0).Activate
Loop
End Sub

Lo que esto hace es recorrer todas las líneas restantes utilizando ActiveCell como puntero a la fila que se está evaluando y almacenando la celda de fila "original" en la variable actual . Una vez que finaliza el ciclo, la celda debajo de la corriente se activa y el ciclo de evaluación interno comienza nuevamente.

Si me equivoqué en algún lugar, no dudes en decirme :)

kenkh
fuente
1

Agregue esta fórmula en cada fila, por ejemplo; en la columna G:

=IF(AND(A2=C2,A2=D2,A2=E2,A2=F2),"DELETE ME","")

Esto dará un resultado como:

A   B   C   D   D   F   G
-   -   -   -   -   -   -
x   o   x   x   x   x   DELETE ME
x   x   x   x   x   o   
x   x   x   x   x   x   DELETE ME
x   o   o   x   x   x   

Luego cree un filtro en la Columna G para las filas que dicen 'BORRARME', y elimínelas.

Garrulinae
fuente
0

@ Garrulinae

Usé tu idea como inspiración. Tenía muchas filas y lo que quería era eliminar las filas que contenían valores duplicados de una columna. Si uso Eliminar duplicados sobre esa columna, eliminará solo los datos de esa columna y no toda la fila. Quería eliminar cada 2da y 3ra fila de toda esa tabla. Entonces, lo que hice hice una nueva columna y dejé el valor de la primera fila vacío, elimíneme en la segunda y tercera fila. Y luego copié los valores de las primeras tres filas de esa columna en particular solo (no toda la fila) y pegué sobre toda la columna de la tabla. Ahora, tenía "eliminarme" en cada segunda y tercera fila de toda la columna. Entonces solo tengo que ordenar los valores de esa columna y eliminar todas las filas que contienen eliminarme. Puede usar la misma solución si desea eliminar cada 2 °, 3 ° y 4 ° o 2 °, 3 °, 4 ° y 5 °, etc.

Espero que ayude a alguien ...

Sunil
fuente
2
No entiendo completamente lo que estás diciendo. En lugar de describir lo que has hecho, se puede demostrar que nos lo (s) fórmula que utilizó, y presentar algunos datos de ejemplo y mostrar cómo funciona su respuesta en que los datos?
Scott