Visual Basic para Aplicaciones - Marcar duplicados excel comparando substrings

Life is soft - evento anual de software empresarial
 
Vista:

Marcar duplicados excel comparando substrings

Publicado por Estefania GIl (2 intervenciones) el 28/05/2018 19:09:52
Hola a todos.

Estoy haciendo unas macros para trabajar con unas excel que tengo, y en una de ellas necesito marcar los duplicados de una columna.

Se considera duplicado cuando El nombre y el apellido son los mismos (un solo apellido)

Alana Thiessen
Alana Thiessen (MOD)

No se considera duplicado:

Kassie Kurtenback
Kassie Knouse
Susan Bain
Ethan Bain

Como podria implementar esto en una macro??
Muchisimas gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Norberto
Val: 115
Bronce
Ha mantenido su posición en Visual Basic para Aplicaciones (en relación al último mes)
Gráfica de Visual Basic para Aplicaciones

Marcar duplicados excel comparando substrings

Publicado por Norberto (34 intervenciones) el 29/05/2018 14:16:12
Hola.

No entiendo lo del (MOD). Es el único caso o puede haber más. Detalla de cuántas formas nos podemos encontrar un nombre aparte de sólo y con esta etiqueta.

Un saludo,

Norberto.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Antoni Masana
Val: 1.134
Oro
Ha mantenido su posición en Visual Basic para Aplicaciones (en relación al último mes)
Gráfica de Visual Basic para Aplicaciones

Marcar duplicados excel comparando substrings

Publicado por Antoni Masana (498 intervenciones) el 30/05/2018 10:01:38
Sería de gran ayuda que subiese un ejemplo.

Preguntas:

¿La lista de nombre se puede ordenar?
¿Como se tienen que marcar?
¿El nombre y el apellido son las primera y segunda palabra?

¿Hay más de dos palabras?

Por ejemplo: Susan Brian Bean

¿Hay nombres compuestos?

Por ejemplo Ana Maria de la Rosa Garcia. Donde Ana María es nombre propio y de la Rosa Es primer apellido.

Saludos.
\\//_
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Marcar duplicados excel comparando substrings

Publicado por EstefaniaGil (2 intervenciones) el 30/05/2018 18:34:10
Hola de nuevo, gracias por la ayuda. Os detallo con un ejemplo mas amplio. Lo que necesito comparar es los primeros string, nombre y apellido, que siempre serán 2 string. La lista está ordenada alfabeticamente y no habrá nombres ni apellidos compuestos y despues del segundo string siempre habrá un espacio. Despues de ese espacio puede haber cualquier otro string. Os pongo en negrita lo que serian los duplicados en este ejemplo.

Muchisimas gracias

Alexia Linares
Alyssa Bozic
Bless Domingo
Brandon Caya (SUPP)
Brandon Thurston
Brandyn Callard
Brendan Chak (SUPP)
Brent Chalifour (THL)
Carly Cicuto
Carly Cicuto -MOD

Claire Groulx
Daniel Stringer
Darren Peters
Devon VanGinkel
Devon VanGinkel -MOD

Elyse Malahoff -MOD
Elyse Malahoss
Erick Medina - Castellanos
Evan Williams
Izabela Kusz
Jasmine Linares
Kaylah Davidson
Keeli Duncan
Kelsey Douglas
Ken Lewis
Kevin Cowl
King Leung Fung (Philip)
Kristin Scattergood
Maddison Tait
Mel Gautier
Mel Gautier -MOD

Miranda Cyre
Miranda Cyre -MOD
Miranda Cyre (SUPP)

Morgan Douglas
Natasha Domm
Ray Bustard
Rob Barr
Ross Camory
Sydney Waller
Talysha Bradshaw
Taylor Steeves
Theresa Lumley
Tia Anderson-Kondraczynski
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Antoni Masana
Val: 1.134
Oro
Ha mantenido su posición en Visual Basic para Aplicaciones (en relación al último mes)
Gráfica de Visual Basic para Aplicaciones

Marcar duplicados excel comparando substrings

Publicado por Antoni Masana (498 intervenciones) el 31/05/2018 07:24:47
La macro recorre la columna A desde la fila 1 hasta la celda sin datos. La marca es poniendo un asterisco en la columna B.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Sub Duplicados()
    Dim Fila As Long, Tb1() As String, Tb2() As String
 
    Fila = 1
    While Cells(Fila + 1, "A") <> ""
        Tb1 = Split(Cells(Fila + 0, "A") + " ", " ")
        Tb2 = Split(Cells(Fila + 1, "A") + " ", " ")
 
        If Tb1(0) = Tb2(0) And Tb1(1) = Tb2(1) Then
            Cells(Fila + 0, "B") = "X"
            Cells(Fila + 1, "B") = "X"
        End If
        Fila = Fila + 1
    Wend
End Sub

Esta otra pone NEGRITA en las celdas iguales

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Sub Duplicados()
    Dim Fila As Long, Tb1() As String, Tb2() As String
 
    Fila = 1
    While Cells(Fila + 1, "A") <> ""
        Tb1 = Split(Cells(Fila + 0, "A") + " ", " ")
        Tb2 = Split(Cells(Fila + 1, "A") + " ", " ")
 
        If Tb1(0) = Tb2(0) And Tb1(1) = Tb2(1) Then
            Cells(Fila + 0, "A").Select: Selection.Font.Bold = True
            Cells(Fila + 1, "A").Select: Selection.Font.Bold = True
        End If
        Fila = Fila + 1
    Wend
End Sub

Saludos.
\\//_
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar