Nuestro team de especialistas despúes de ciertos días de trabajo y recopilación de de datos, dimos con los datos necesarios, queremos que te sea útil en tu plan.
Solución:
Podría considerar usar el complemento de búsqueda aproximada de Microsoft.
Desde el sitio de EM:
Visión de conjunto
El complemento Fuzzy Lookup para Excel fue desarrollado por Microsoft Research y realiza coincidencias aproximadas de datos textuales en Microsoft Excel. Se puede usar para identificar filas duplicadas aproximadas dentro de una sola tabla o para unir filas similares entre dos tablas diferentes. La coincidencia es resistente a una amplia variedad de errores, incluidos errores de ortografía, abreviaturas, sinónimos y datos agregados o faltantes. Por ejemplo, podría detectar que las filas “Sr. Andrew Hill”, “Hill, Andrew R.” y “Andy Hill” se refieren a la misma entidad subyacente y arrojan una puntuación de similitud junto con cada coincidencia. Si bien la configuración predeterminada funciona bien para una amplia variedad de datos textuales, como nombres de productos o direcciones de clientes, la coincidencia también se puede personalizar para dominios o idiomas específicos.
Buscaría usar esta lista (solo la sección en inglés) para ayudar a eliminar las mantecas comunes.
Además, es posible que desee considerar el uso de una función que le diga, en términos exactos, qué tan “cerca” de dos string están. El siguiente código vino de aquí y gracias a smirkingman.
Option Explicit
Public Function Levenshtein(s1 As String, s2 As String)
Dim i As Integer
Dim j As Integer
Dim l1 As Integer
Dim l2 As Integer
Dim d() As Integer
Dim min1 As Integer
Dim min2 As Integer
l1 = Len(s1)
l2 = Len(s2)
ReDim d(l1, l2)
For i = 0 To l1
d(i, 0) = i
Next
For j = 0 To l2
d(0, j) = j
Next
For i = 1 To l1
For j = 1 To l2
If Mid(s1, i, 1) = Mid(s2, j, 1) Then
d(i, j) = d(i - 1, j - 1)
Else
min1 = d(i - 1, j) + 1
min2 = d(i, j - 1) + 1
If min2 < min1 Then
min1 = min2
End If
min2 = d(i - 1, j - 1) + 1
If min2 < min1 Then
min1 = min2
End If
d(i, j) = min1
End If
Next
Next
Levenshtein = d(l1, l2)
End Function
Lo que esto hará es decirle cuántas inserciones y eliminaciones se deben hacer a uno string para llegar al otro. Intentaría mantener este número bajo (y los apellidos deberían ser exactos).
Tengo una fórmula (larga) que puedes usar. No está tan perfeccionado como los anteriores, y solo funciona para el apellido, en lugar de un nombre completo, pero puede que le resulte útil.
Entonces, si tiene una fila de encabezado y desea comparar A2
con B2
colóquelo en cualquier otra celda de esa fila (p. ej., C2
) y copiar hasta el final.
=SI(A2=B2,"EXACTO",SI(SUSTITUIR(A2,"-"," ")=SUSTITUIR(B2,"-"," "),"Guión",SI(LARGO(A2)>LARGO( B2),SI(LARGO(A2)>LARGO(SUSTITUIR(A2,B2,"")),"Cadena completa",SI(MEDIO(A2,1,1)=MEDIO(B2,1,1),1, 0)+SI(MEDIO(A2,2,1)=MEDIO(B2,2,1),1,0)+SI(MEDIO(A2,3,1)=MEDIO(B2,3,1),1, 0)+SI(MEDIO(A2,LARGO(A2),1)=MEDIO(B2,LARGO(B2),1),1,0)+SI(MEDIO(A2,LARGO(A2)-1,1)= MEDIO(B2,LARGO(B2)-1,1),1,0)+SI(MEDIO(A2,LARGO(A2)-2,1)=MEDIO(B2,LARGO(B2)-2,1),1 ,0)&"°"),SI(LARGO(B2)>LARGO(SUSTITUIR(B2,A2,"")),"Cadena completa",SI(MEDIO(A2,1,1)=MEDIO(B2,1 ,1),1,0)+SI(MEDIO(A2,2,1)=MEDIO(B2,2,1),1,0)+SI(MEDIO(A2,3,1)=MEDIO(B2,3 ,1),1,0)+SI(MEDIO(A2,LARGO(A2),1)=MEDIO(B2,LARGO(B2),1),1,0)+SI(MEDIO(A2,LARGO(A2) -1,1)=MEDIO(B2,LARGO(B2)-1,1),1,0)+SI(MEDIO(A2,LARGO(A2)-2,1)=MEDIO(B2,LARGO(B2)- 2,1),1,0)&"°"))))
Esto devolverá:
- EXACTO – si es una coincidencia exacta
- Guión – si es un par de nombres de doble barra pero uno tiene un guión y el otro un espacio
- Entero string – si todo un apellido es parte del otro (p. ej., si Smith se ha convertido en French-Smith)
Después de eso te dará un grado de 0° a 6° dependiendo del número de puntos de comparación entre los dos. (es decir, 6° se compara mejor).
Como digo, un poco tosco y listo, pero espero que te lleve más o menos al estadio correcto.
Recuerda que puedes dar recomendación a este enunciado si si solucionó tu problema.