Cómo identificar duplicados dentro de texto en dos columnas en Excel

Cómo identificar duplicados dentro de texto en dos columnas en Excel

Tengo una hoja de trabajo donde la columna A tiene varios nombres en diferentes formatos:
A1 John Smith
A2 Jones, Mary
A3 Sally Gomez
A4 La familia González

La columna B tiene datos similares:
B1 The Smith Family Trust
B2 Bob y Mary Jones
B3 Blackwell, John
B4 Luz González

Me gustaría identificar los casos en los que se encuentra el mismo apellido en la columna A y en la columna B. En los ejemplos anteriores, la fórmula, si se coloca en la columna C, daría como resultado

C1 VERDADERO (porque "Smith" se encuentra en ambas A1 y B1)
C2 VERDADERO (porque "Jones" se encuentra tanto en A2 como en B2)
C3 FALSO (porque no hay palabras comunes entre A3 y B3)
C4 VERDADERO (porque "González" se encuentra tanto en A4 como en B4)

¿Es esto incluso posible?

Respuesta1

Teniendo en cuenta sus comentarios y su pregunta, parece que desea devolver VERDADERO si alguna palabra en una frase coincide con una palabra en la frase adyacente. Una forma de hacerlo es con una función definida por el usuario (VBA). Lo siguiente excluye cualquier palabra que esté en arrExclude, a la que puede agregar como mejor le parezca. También excluirá cualquier carácter que no sea letras, dígitos o espacios, y cualquier palabra que consista en un solo carácter.

Vea si esto funciona para usted.

Otra opción sería echar un vistazo al complemento gratuito de búsqueda difusa proporcionado por MS para las versiones de Excel 2007 y posteriores.

Para ingresar a esta función definida por el usuario (UDF), alt-F11abre el Editor de Visual Basic. Asegúrese de que su proyecto esté resaltado en la ventana del Explorador de proyectos. Luego, desde el menú superior, seleccione Insert/Moduley pegue el código a continuación en la ventana que se abre.

Para utilizar esta función definida por el usuario (UDF), ingrese una fórmula como

=WordMatch(A1,B1)

en alguna celda.

EDITAR2: Find Matchessegmento cambiado para ver si funciona mejor en Mac


Option Explicit
Option Base 0
Option Compare Text
Function WordMatch(S1 As String, S2 As String) As Boolean
    Dim arrExclude() As Variant
    Dim V1 As Variant, V2 As Variant
    Dim I As Long, J As Long, S As String
    Dim RE As Object
    Dim sF As String, sS As String

'Will also exclude single letter words
arrExclude = Array("The", "And", "Trust", "Family", "II", "III", "Jr", "Sr", "Mr", "Mrs", "Ms")

'Remove all except letters, digits, and spaces
'remove extra spaces
'Consider whether to retain hyphens

Set RE = CreateObject("vbscript.regexp")
With RE
    .Pattern = "[^A-Z0-9 ]+|\b\S\b|\b(?:" & Join(arrExclude, "|") & ")\b"
    .Global = True
    .ignorecase = True
End With

With WorksheetFunction
    V1 = Split(.Trim(RE.Replace(S1, "")))
    V2 = Split(.Trim(RE.Replace(S2, "")))
End With

'Find Matches
If UBound(V1) <= UBound(V2) Then
    sS = " " & Join(V2) & " "
    For I = 0 To UBound(V1)
        sF = " " & V1(I) & " "
        If InStr(sS, sF) > 0 Then
            WordMatch = True
            Exit Function
        End If
    Next I
Else
    sS = " " & Join(V1) & " "
    For I = 0 To UBound(V2)
        sF = " " & V2(I) & " "
        If InStr(sS, sF) > 0 Then
            WordMatch = True
            Exit Function
        End If
    Next I
End If

WordMatch = False

End Function

EDITAR:Aquí hay una captura de pantalla de los resultados, utilizando tanto sus ejemplos originales como los ejemplos que proporcionó en un comentario a continuación donde indicó que estaba teniendo un problema.

ingrese la descripción de la imagen aquí

Respuesta2

La parte más difícil de este ejercicio es determinar qué, en la columna A, constituye un apellido. En su ejemplo, es:

  1. La primera palabra, si hay una coma en el nombre completo.
  2. la segunda palabra

Si esa regla es cierta, entonces puedes hacer una fórmula como esta:

=NOT(ISERROR(FIND(last_name, B1:B4)))

La fórmula para determinar el apellido es un poco más compleja. Básicamente, tienes que averiguar en qué posiciones de los caracteres se encuentran los espacios y luego colocar las letras en el medio. Hay una buena explicación en este hilo:

http://www.mrexcel.com/forum/excel-questions/17559-return-first- second-word-text-string-find-subsitute.html

Respuesta3

En la celda C1 usa esta fórmulaEnlace

=IF(VLOOKUP(B1:B4,A:A,1)=B1,"",B1)

Respuesta4

Resalte ambas columnas > formato condicional (pestaña de inicio) > resalte reglas de celda > valores duplicados. Esto resaltará todos los duplicados en ambas columnas.
Asegúrese de resaltar las columnas y no las celdas.

información relacionada