Cómo separar nombres y apellidos en Excel

Aprender a separar nombres de apellidos en Excel es de suma importancia para tener una base de datos confiable ya que dicha información es vital para elaborar reportes y análisis, pero también es cierto que es una tarea muy compleja de realizar.

Dificultad para separar nombres y apellidos

La dificultad principal para separar nombres y apellidos en Excel es la cantidad de variantes que pueden existir en los nombres de las personas lo cual hace necesario analizar cada caso específico para utilizar el procedimiento adecuado. La solución no es tan sencilla como decirle a Excel que la primera palabra es el nombre y la segunda palabra es el apellido. La siguiente imagen muestra el resultado de aplicar esta lógica a los datos:

Cómo separar nombres y apellidos en Excel

Para ti y para mí es muy fácil saber que en este ejemplo todos los nombres consisten de un solo nombre y un apellido pero ¿Cómo le decimos a Excel que “del Toro” y “de la Fuente” son apellidos? Excel no es capaz de hacer esta distinción por sí solo así que es necesario darle indicaciones específicas.

El caso de separación más sencillo

Si después de hacer una revisión de los datos te das cuenta que para la mayoría de los registros tienes nombres de una sola palabra así como apellidos de una sola palabra, entonces te recomiendo utilizar el Asistente para convertir texto en columnas el cual colocará cada palabra en una columna diferente.

Separar nombres y apellidos en columnas diferentes en Excel

Este asistente se encuentra en la ficha Datos dentro del grupo Herramientas de datos y justamente en el paso 2 del proceso podrás elegir el Espacio como el carácter delimitador para hacer la separación en varias columnas. Al finalizar la ejecución del asistente tendrás un resultado similar al siguiente:

Dividir nombres con el Asistente para convertir texto en columnas

Observa que no importa la cantidad de palabras en el nombre, el asistente colocará cada palabra en una columna diferente. Esta solución es muy buena en caso de que hayas detectado que la mayoría de los nombres y apellidos consisten de una sola palabra ya que solo tendrás que ajustar manualmente aquellos nombres que tuvieran más de tres palabras porque el asistente habrá ocupado columnas adicionales en esos casos.

Un beneficio de este método es que no importa si los datos comienzan por los apellidos o por los nombres ya que de igual manera se realizará la separación por palabras. Lo que es muy  importante es que todos los registros tengan la misma estructura, es decir, que todos comiencen por apellido o que todos comiencen por nombre o de lo contrario tendrás un caso más difícil de resolver.

Separar los apellidos compuestos

En realidad muy pocas veces podremos aplicar el método anterior a nuestros datos porque los nombres pueden contener apellidos compuestos como los mostrados en el primer ejemplo de este artículo. Para resolver este tema no hay otra manera más que crear una función VBA que haga la separación de dichos apellidos y poder considerarlos como una sola unidad.

Pero debo ser claro, los apellidos compuestos que podemos detectar fácilmente son aquellos que comienzan por palabras como “de”, “del”, “la”, “las”, “los”, “san”. Si el apellido no contiene estas palabras, será prácticamente imposible saber si dos o más palabras forman un solo apellido. La función VBA (UDF) que nos ayudará a separar este tipo de apellidos compuestos es la siguiente:

Function SEPARARAPELLIDOS(rng As Range) As String

Dim nombreArr() As String
Dim nuevaCadena As String
Dim i As Integer

'Dvidir el nombre por palabras en un arreglo
nombreArr = Split(Trim(rng.Value))

'Analizar cada palabra dentro del arreglo
For i = 0 To UBound(nombreArr)
    Select Case LCase(nombreArr(i))
        
        'Palabras que forman parte de un apellido compuesto
        'Agregar nuevas palabras separadas por una coma
        Case "de", "del", "la", "las", "los", "san"
            'Insertar espacio en blanco
            nuevaCadena = nuevaCadena & nombreArr(i) & " "
        Case Else
            'Insertar caracter delimitador
            nuevaCadena = nuevaCadena & nombreArr(i) & "@"
    
    End Select
Next

'Remover el último caracter delimitador de la cadena
If Right(nuevaCadena, 1) = "@" Then
    nuevaCadena = Left(nuevaCadena, Len(nuevaCadena) - 1)
End If

SEPARARAPELLIDOS = nuevaCadena

End Function

El objetivo de la función es colocar un carácter delimitador (@) para hacer la separación entre cada palabra, pero dentro de su análisis omitirá las palabras definidas como conectores, para las cuales insertará un espacio en blanco en lugar del carácter delimitador. Observa que en la línea 16 del código se encuentran las palabras que identifican el inicio de un apellido compuesto. Si deseas agregar alguna palabra adicional, deberás hacerlo separando la nueva palabra por una coma. Al aplicar esta función a nuestros datos obtenemos el siguiente resultado:

Cómo separar nombres y apellidos en diferentes celdas

La función ha detectado correctamente los apellidos compuestos que contienen las palabras definidas y los identifica como uno solo. Antes de hacer la separación de cada uno de ellos debemos copiar el valor de las celdas a otra columna:

Dividir nombres completos en nombres y apellidos en Excel

Esta acción es necesaria ya que utilizaremos dicha columna como la fuente de datos para el Asistente para convertir texto en columnas a quien indicaremos en el paso 2 que deseamos utilizar el carácter delimitador “@” de la siguiente manera:

Separar apellidos y nombre de una celda de Excel

Al terminar con todos los pasos del Asistente, tendremos el siguiente resultado:

Extraer nombre y apellidos de una celda

La función que hemos creado trabaja correctamente sin importar si los nombres comienzan por los apellidos. En la siguiente imagen puedes observar el resultado de ejecutar los mismos pasos anteriores pero con datos que tienen un orden diferente.

Cómo extraer el nombre y apellidos en Excel

La diferencia más importante es que para las primeras dos filas, el nombre se ha colocado bajo la Palabra 2. En este caso será necesario implementar una fórmula de Excel para evaluar si la Palabra 3 está vacía, y en su caso considerar el valor de la Palabra 2 como el nombre en lugar de ser apellido.

Casos de mayor complejidad

Ya hemos visto algunas alternativas para separar nombres y apellidos en Excel, pero existen casos en los que ninguna opción podrá hacer la separación correcta. Me refiero a esos casos donde existe más de una palabra para definir alguno de los apellidos o el nombre mismo. Por ejemplo, considera los siguientes datos:

Separar nombres y apellidos en una celda a varias celdas

Después de aplicar nuestra función VBA y separar la información por columnas, notamos que todos los nombres fueron divididos en cuatro palabras pero la parte compleja es detectar que para el primer nombre la Palabra 1 y la Palabra 2 forman el nombre de la persona. Que para el segundo nombre la Palabra 3 y la Palabra 4 son un apellido compuesto y para el último nombre la Palabra 2 y la Palabra 3 forman un apellido compuesto.

No existe función ni método en Excel que sea capaz de hacer esta distinción de una manera simple. Es por eso que es importante analizar los datos y aplicar el método que mejor aplique para la mayoría de los casos y resolver manualmente las excepciones. Por supuesto que todos estos problemas se evitarían si se implementara un sistema de captura de datos adecuado y no dejar que Excel haga la separación de nombres y apellidos. Pero si no hay otra alternativa, considera utilizar los métodos presentados en esta ocasión para separar correctamente la mayor cantidad de datos posibles.

Dejo el archivo de trabajo que utilicé para los ejemplos de la función VBA de manera que puedas implementarla en tus propios libros y comenzar a separar nombres y apellidos en Excel.

Artículos relacionados
Dividir texto en columnas
Obtener las iniciales de un nombre