Eliminar celdas con parte del texto duplicado.

Hola,

He visto muchos ejemplos para eliminar celdas con contenido duplicado pero en todos se verifica todo el contenido de la celda y no se me ocurre como adaptar esos códigos.

Lo que necesito es eliminar las celdas repetidas que tengan repetido parcialmente su contendió.

Por ejemplo:

11:00:00 Jose is trying to occupy seat g01323(1)

11:00:00 Ferota is trying to occupy seat g01212(0)
11:00:00 Jose is trying to occupy seat g01210(0)

11:00:00 Ferota is trying to occupy seat g01222(0)

Me interesa comprobar que el nombre "Jose" o "Ferota" no esté repetido para todos los registros que incluyan "is trying to occupy seat".

Se que puede sonar un poco complejo pero si es posible, quiero eliminar las primeras repetidas y quedarme con la última.

Gracias

1 respuesta

Respuesta
1

Mándame el libro para así entenderlo bien y tener donde practicar ejemplos.

Mi correo es [email protected]

Pon como asunto el título de la pregunta y como nombre del libro algo como

EliminarCeldasRepetidas.XLSM (o la terminación que tenga)

Supongo que lo que quieres decir es que se elimine la fila completa. ¿Entonces quieres que deje la primera vez que aparece

Jose is trying to occupy seat

¿Y borre las demás?

¿Y que haga lo mismo con las de

¿Ferota is trying to occupy seat?

Si, quiero que se elimine la fila completa.

Quiero quedarme con la última que es la mas actualizada. (creo que eso es parte de lo mas complicado porque no logro contar el total y que elimine hasta llegar a la última)

Creo que ya lo tengo. Lo que hago es guardar los números de filas con los textos que dices en una matriz llamada Filas. Siempre que se hace esto se tiene la duda de como de grande debe ser esa matriz. Para que no haya problemas la hago dinámica, será tan grande como haga falta, cada vez que aparece un nuevo dat re redimensiona. Si el número de datos almacenados es superior a 1 se borran después todas las filas salvo la última.

Esta es la macro que he añadido:

Sub QuitarFilasRepetidas()
 Call QuitarFilasUsuario("Jose is trying to occupy seat")
 Call QuitarFilasUsuario("Ferota is trying to occupy seat")
End Sub
Sub QuitarFilasUsuario(ByVal Texto As String)
Dim Rango As Range
Dim Repes, Direccion1, Direccion2, UltimaFila As Integer
Dim Filas() As Variant
Repes = 0
UltimaFila = Worksheets("eventlog").Range("A65536").End(xlUp).Row
Set Rango = Worksheets("eventlog").Range("A1:A" & UltimaFila).Find(Texto, lookat:=xlPart)
If Not Rango Is Nothing Then
   Repes = Repes + 1
   ReDim Preserve Filas(Repes)
   Direccion1 = Rango.Row
   Filas(Repes) = Direccion1
   Do
      Set Rango = Worksheets("eventlog").Range("A1:A" & UltimaFila).FindNext(Rango)
      If Not Rango Is Nothing Then
         Direccion2 = Rango.Row
         If Direccion2 <> Direccion1 Then
            Repes = Repes + 1
            ReDim Preserve Filas(Repes)
            Filas(Repes) = Direccion2
         End If
      End If
   Loop Until (Rango Is Nothing) Or Direccion2 = Direccion1
   If Repes > 1 Then
      For i = 1 To Repes - 1
         Rows(Filas(i) - i + 1).Delete Shift:=xlUp
      Next
      MsgBox ("Borradas " & i - 1 & " filas con " & Texto)
   End If
End If
End Sub

Ahora te mando el fichero con la macro. Lo que tendrás que hacer para probarla es añadir filas de las que se pueden quitar, ya que en el fichero que mna mandaste no había ninguna fila con Jose is trying to occupy seat y una sola con Ferola is trying to occupy seat con lo cual no se eliminaba ninguna fila.

Y eso es todo, si necesitas alguna explicación pídemela. Y si ya está bien no olvides puntuar.

Muchísimas gracias por tu tiempo.

Estoy mirando el código y creo entender que hace, excelente!

Intentaré que esto se reproduzca para todos los nombres de usuario que existen repitiendo el proceso.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas