Extraer iniciales de un nombre en Excel

Es común tener listas de nombres de personas en Excel y vernos en la necesidad de obtener las iniciales de cada uno de ellos. En esta ocasión te mostraré dos métodos para obtener dichas iniciales, primero con fórmulas y luego con una macro.

Para el primer método comenzaremos creando una fórmula que obtendrá las iniciales de nombres que constan de dos palabras y luego aumentaremos la complejidad para nombres de tres y cuatro palabras. De esta manera podré explicarte con detenimiento el desarrollo de la fórmula y podrás aumentar su complejidad fácilmente.

Cómo extraer iniciales de un nombre

Comenzaré por darte la fórmula que extrae las iniciales de nombres formados por dos palabras y es la siguiente:

=IZQUIERDA(A2, 1) & EXTRAE(A2, ENCONTRAR(" ", A2) + 1, 1)

La función IZQUIERDA obtiene el primer carácter de la cadena de texto de la celda A2. Para obtener la segunda inicial utilizamos la función EXTRAE, que comenzará la extracción justamente una posición después del espacio en blanco encontrado por la función ENCONTRAR.

En otras palabras, la función ENCONTRAR encuentra el espacio en blanco dentro del nombre y a esa posición le sumamos uno para extraer el primer carácter de la segunda palabra. En la siguiente imagen puedes ver el resultado de utilizar la fórmula anterior.

Obtener iniciales de nombres

Esta fórmula funciona perfectamente bien excepto cuando tenemos una sola palabra. La siguiente imagen muestra el error que obtenemos si el nombre es de una palabra.

Obtener iniciales de nombres en Excel

Es necesario resolver este problema de manera que podamos utilizar la misma fórmula para cualquier cadena de texto sin importar el número de palabras que contenga. La solución será aplicar una formula diferente dependiendo el número de palabras contenidas en el nombre.

Contar el número de palabras

Es indispensable conocer la cantidad de palabras que tiene un nombre para poder utilizar la fórmula adecuada al extraer las iniciales. Así que, la siguiente fórmula nos ayuda a contar las palabras de una cadena de texto.

=LARGO(A2) - LARGO(SUSTITUIR(A2," ","")) + 1

La fórmula hace una resta de la longitud de la cadena original menos la longitud de la cadena de texto sin espacios en blanco y finalmente le suma uno para obtener el número de palabras. En la siguiente imagen puedes ver el resultado de aplicar esta fórmula a diferentes cadenas de texto:

Extraer iniciales con funciones en Excel

Ahora combinaremos esta fórmula con la anterior para extraer las iniciales de una cadena de texto sin importar si tenemos una o dos palabras.

Fórmula para extraer iniciales

Para extraer iniciales en Excel, utilizaremos la fórmula que cuenta palabras para poder decidir la fórmula de extracción que utilizaremos. La decisión la tomaremos con la función ELEGIR la cual nos permite elegir una acción a partir de un número índice, que en este caso estará determinado por la fórmula que cuenta las palabras. La fórmula es la siguiente:

=ELEGIR(
LARGO(A2) - LARGO(SUSTITUIR(A2," ","")) + 1,
IZQUIERDA(A2),
IZQUIERDA(A2, 1) & EXTRAE(A2, ENCONTRAR(" ", A2) + 1, 1))

He separado esta fórmula en diferentes líneas para que sea mucho más fácil explicarla, pero al momento de ingresarla puedes eliminar los saltos de línea.

En primer lugar tenemos la función ELEGIR, cuyo primer argumento está indicado en la línea 2 y es la fórmula que cuenta palabras. Si dicha fórmula nos dice que la cadena de texto de la celda A2 tiene una palabra, entonces se ejecutará  la fórmula de la línea 3 que devolverá el primer carácter de la izquierda.

Por el contrario, si la cadena de texto de la celda A2 tiene dos palabras, se ejecutará la fórmula de la línea 4 que es la misma que he utilizado en la primera sección de este artículo y que previamente comprobamos que extraía correctamente las iniciales de un nombre de dos palabras. La siguiente imagen comprueba el funcionamiento de la nueva fórmula:

Extraer las iniciales de un nombre en Excel

Esta fórmula funciona correctamente para nombres de una o dos palabras, pero si ingresamos un nombre de tres palabras obtendremos el error #¡VALOR!

Esto se debe a que, nuestra fórmula detecta correctamente que la cadena de texto tiene tres palabras, pero no hemos definido una fórmula que atienda ese caso específico. En la siguiente sección agregamos la funcionalidad a nuestra fórmula para obtener las iniciales de nombres con tres palabras.

Extraer iniciales de nombres en Excel

Lo que debemos hacer para que nuestra fórmula funcione adecuadamente para nombres de tres palabras es agregar un nuevo argumento a la función ELEGIR.

Esa fórmula que ingresaremos como el cuarto argumento de la función ELEGIR utilizará el mismo método de extracción que la fórmula que actualmente extrae las iniciales para nombres de dos palabras. La fórmula completa para extraer las iniciales de un nombre de hasta tres palabras es la siguiente.

=ELEGIR(
LARGO(A2) - LARGO(SUSTITUIR(A2," ","")) + 1,
IZQUIERDA(A2),
IZQUIERDA(A2, 1) & EXTRAE(A2, ENCONTRAR(" ", A2) + 1, 1),
IZQUIERDA(A2, 1) & EXTRAE(A2, ENCONTRAR(" ", A2) + 1, 1) & EXTRAE(A2, ENCONTRAR(" ", A2, ENCONTRAR(" ", A2) + 1) + 1, 1))

Como puedes notar, las primeras cuatro líneas de esta fórmula son exactamente iguales que la fórmula de la sección anterior. La fórmula insertada en la línea 5 es la encargada de obtener las iniciales de una cadena de texto de tres palabras. La siguiente imagen muestra el resultado de utilizar la nueva fórmula.

Cómo extraer las iniciales de un nombre en Excel

Esta fórmula extraerá las iniciales de nombres formados por una, dos o tres palabras. Y como seguramente lo sospechas, si queremos obtener las iniciales de nombres formados por cuatro palabras será necesario agregar otra fórmula adicional como el argumento final de la función ELEGIR.

No publicaré dicha fórmula aquí, pero podrás verla en el archivo descargable que encontrarás al final del artículo. La siguiente imagen muestra la manera en que dicha fórmula es capaz de extraer las iniciales de nombres de hasta cuatro palabras.

Sacar las iniciales de un nombre en Excel

Nota importante: Todas las fórmulas anteriores dejarán de funcionar correctamente si existen espacios en blanco al inicio o al final de la cadena de texto. De igual manera devolverán resultados incorrectos si se tienen espacios dobles entre los nombres.

Si tienes una lista de nombres y quieres aplicar las fórmulas recién creadas, es recomendable utilizar la función ESPACIOS sobre los nombres originales para asegurarse de que no existen espacios dobles ni que existen espacios en blanco a los extremos de la cadena de texto.

Macro para extraer iniciales en Excel

Como puedes ver, la solución con fórmulas es factible pero entre mayor sea la cantidad de palabras de las que consta un nombre, la fórmula deberá ser de mayor complejidad.

Aunque Excel obtendrá correctamente las iniciales utilizando fórmulas, en ocasiones es mejor utilizar programación VBA para sustituir esas fórmulas tan grandes ya que se facilitará en gran medida el mantenimiento y edición de nuestra hoja de cálculo.

A continuación muestro el código de la función UDF que nos ayudará a extraer las iniciales de cualquier nombre. Para esta función no importará la cantidad de palabras, ya que recorrerá automáticamente la cadena de texto y obtendrá la primera letra de cada palabra.

Function INICIALES(texto As Range) As String

    Dim resultado As String
    Dim palabras() As String
    
    palabras = Split(AjustarEspacios(texto))
    
    For i = LBound(palabras) To UBound(palabras)
        resultado = resultado & Left(palabras(i), 1)
    Next
    
    INICIALES = resultado

End Function


Private Function AjustarEspacios(ByVal texto As String) As String

    Dim resultado As String
        
    resultado = Trim(texto)
    Do While InStr(resultado, "  ")
        resultado = Replace(resultado, "  ", " ")
    Loop
    
    AjustarEspacios = resultado

End Function

El código muestra la función INICIALES que se encargará de obtener todas las palabras del texto original con la función Split y las almacenará en el arreglo palabras. En seguida recorrerá dicho arreglo con un bucle For-Next para obtener la primera letra de cada palabra con la función Left.

La función INICIALES hace uso de la función privada AjustarEspacios, la cual he creado para remover los espacios en los extremos de la cadena de texto y también para remover los espacios dobles que pudieran existir.

Aunque la cadena de texto original tuviera espacios en blanco excedentes, la función INICIALES siempre devolverá correctamente las iniciales porque la función AjustarEspacios se encargará de homogeneizar los espacios en blanco del texto.

La siguiente imagen muestra el uso de la función en una hoja que contiene nombres de diferente longitud y podrás observar cómo extrae correctamente las iniciales.

Generar columna con las iniciales del nombre y apellidos en Excel

Descarga el libro de trabajo utilizado en la creación de este artículo. Ahí encontrarás las fórmulas para extraer iniciales en Excel así como el código VBA de la función UDF que acabamos de crear. Para que la función UDF trabaje correctamente deberás aprobar la ejecución de la macro al momento de abrir el archivo descargado.