Cómo identificar casos de dos nombres en una lista que podría tener hasta cuatro nombres

Cómo identificar casos de dos nombres en una lista que podría tener hasta cuatro nombres

Esta pregunta es una consecuencia de una pregunta anterior:Fórmula de Excel: fórmula de separación de nombres para personas que tienen apellidos de varias partes:.

Contexto

Tengo una lista de más de 20.000 contactos donde hay una única columna de "Nombre completo". Necesito crear dos columnas para Nombre y Apellido. Sin embargo, no todos los nombres se ajustan a ese patrón simple. La lista incluye nombres como:

David Batte
Guy-Mael Jacobe de Naurois
Jean-Marc Lioutier
Thibaud Le Seguillon
Mrs. Manuela Junghaehnel
Hussain Mohammed Dipu Kabir

Como resultado de la pregunta anterior, estoy atacando el problema separando colecciones de nombres que se ajustan a patrones particulares a los que puedo aplicar reglas de análisis apropiadas. Una cantidad relativamente pequeña de patrones me permitirá automatizar el análisis de la mayor parte de la lista, haciendo que el resto sea una tarea más manejable.

Esta pregunta

Una parte sustancial de la lista de nombres completa contiene solo un nombre y apellido, que son fáciles de analizar. Mi objetivo con esta pregunta es identificar esos nombres de dos nombres para poder separarlos del resto de la lista.

Respuesta1

Hay varias formas de identificar casos en los que los nombres de una lista contienen solo dos nombres de componentes, como nombre y apellido. Esa condición está definida por los espacios que separan los nombres de los componentes.

Método 1

Esta pregunta es una rama de una anterior (Fórmula de Excel: fórmula de separación de nombres para personas que tienen apellidos de varias partes:), donde ya comentamos en los comentarios la identificación de casos de un solo nombre, como solo nombre o apellido. Si ya eliminó esos nombres de la lista, por lo que se garantiza que cada entrada tendrá al menos dos nombres, puede usar una técnica similar aquí y desarrollarla.

Este enfoque busca un espacio y luego, a partir de ahí, busca otro espacio. Si puede encontrar un segundo espacio, la entrada tiene más de dos nombres de componentes. Si la entrada está en A1, la fórmula básica sería:

=FIND(" ",TRIM(A1),FIND(" ",TRIM(A1))+1)

El resultado de esto será un número (ubicación del siguiente espacio) o un #VALOR. error si no lo hay. ¡El valor! El error será fácil de detectar e identifica entradas de dos nombres. Tenga en cuenta que también identificará entradas de un solo nombre, por lo que este método solo funcionará si ya las ha eliminado.

Puede hacer que esto sea más atractivo visualmente probando el resultado para la condición de error y luego mostrando un mensaje de texto para los casos de dos nombres o un espacio en blanco. Envolver la fórmula anterior en una prueba IF le daría una fórmula como esta:

=IF(ISERROR(FIND(" ",TRIM(A1),FIND(" ",TRIM(A1))+1)),"Just 2","")

Método 2

Otro enfoque es contar los espacios. De hecho, podría utilizar este enfoque para encontrar cualquier número específico de espacios, por lo que simplemente cambiar el recuento objetivo le permitirá encontrar también las entradas de un solo nombre. Este enfoque cuenta los espacios eliminando todos los espacios y viendo cuántos caracteres se reduce la cadena. La comparación de longitud produce el recuento de espacios. Lo envuelves con una prueba IF para hacer lo que quieras con el número resultante. La fórmula para marcar entradas con dos nombres (es decir, un solo espacio) se vería así:

=IF(LEN(TRIM(A1))-LEN(SUBSTITUTE(TRIM(A1)," ",""))=1,"Just 2","")

Respuesta2

Dejaré un método más simple quePuede que no sea óptimopara 20000 filas.

  • Divida los nombres por espacios usando Datos -> Texto en columnas
  • Los nombres se dividirán en cuatro columnas A, B, C y D.
  • haga clic en filtrar y filtrar blanksen la columna C
  • solo aparecerán los nombres de dos palabras en A y B. Cópielos.
  • puedes unir los nombres usando=TEXTJOIN(" ",TRUE,A1:B1)

Respuesta3

Me gustaría sugerir dos métodos posibles, el primero es Non VBA y el otro es VBA.

Método 1:

ingrese la descripción de la imagen aquí

Cómo funciona:

  • Ingrese esta fórmula en la celda H2para crear valores auxiliares (Identificar partes de nombres.) y rellénelo.

=LEN(G2)-LEN(SUBSTITUTE(G2," ",""))

  • Escriba criterios 2en la celda H1.
  • Ingrese esta fórmula de matriz en la celda I2, termine conCtrl+Mayús+Entrary llenarlo.

    {=IFERROR(INDEX($G$2:$G$14,SMALL(IF(H$1=$H$2:$H$14,ROW($G$2:$G$14)- MIN(ROW($G$2:$G$14))+1,""), ROW()-1)),"")}

NÓTESE BIEN

  • Al cambiar los criterios en la celda H1a 1o 3puede obtener una lista de dos y más de 3 nombres de partes.

ingrese la descripción de la imagen aquí


ingrese la descripción de la imagen aquí


Método 2:

Dado que se trata de más de 20000 filas, VBA (Macro) será el método más rápido para finalizar el trabajo.

Cómo funciona:

  • Botón derecho del ratónPestaña Hoja y desde el menú emergente presioneVer códigopara obtener el editor VB.
  • Copiar pegareste código como módulo estándar, y finalmenteCORRERla Macro.

    Sub DeleteMorethan2()
    
    Dim r As Integer, c As Integer, space_count As Integer
    
    For r = 2 To 15
    space_count = 0
    
    For c = 1 To Len(Range("A" & r))
    
       If Mid(Range("A" & r), c, 1) = " " Then space_count = space_count + 1
       If space_count > 1 Then Range("A" & r).ClearContents
    
      Next
    Next
    
    End Sub
    

Obtienes esto:

ingrese la descripción de la imagen aquí

NÓTESE BIEN

  • Este código está funcionando Rows 2 to 15y, al editar esta parte For r = 2 To 15, puede incluir más filas.
  • La columna utilizada es A, que también es editable.

Además, me gustaría sugerir una fórmula de matriz para volver a crear la lista de nombres eliminando filas en blanco.

ingrese la descripción de la imagen aquí

  • Ingrese esta fórmula de matriz en la celda B2, termine conCtrl+Mayús+EntrarY llénelo.

    {=IFERROR(INDEX(A$2:A$14,SMALL(IF(A$2:A$14<>"",ROW(A$2:A$14)-ROW(A$2)+1),ROWS(B$2:B2))),"")}

Ajuste las referencias de celda en la Fórmula según sea necesario.

información relacionada