Rajeev necesita una fórmula que extraiga las primeras letras de una serie de palabras. Por ejemplo, si una celda contiene el texto «Rajeev Kumar Pandey», le gustaría extraer, en otra celda, las letras «RKP».

El número de palabras en serie puede variar de una celda a otra.

Hay un par de formas de abordar esta tarea. Se supone, para empezar, que no desea modificar la estructura de su hoja de trabajo agregando columnas intermedias. Esta suposición también excluye el uso de la función Text to Columns para dividir la cadena original en palabras individuales.

La clave del problema es asegurarse de que su fórmula pueda determinar dónde están los espacios en la cadena original. Puede pensar que una fórmula como la siguiente funcionará:

=LEFT(A1,1)&MID(A1,FIND(" ",A1,1)+1,1)&MID(A1, FIND(" ",A1,FIND(" ",A1,1)+1)+1,1)

Esta fórmula funciona parcialmente. Funciona bien si la cadena original tiene dos espacios que separan tres palabras. Si hay menos palabras, la fórmula devuelve un error. Si hay más palabras, solo devuelve las primeras letras de las tres primeras palabras (ignora cualquier cosa después de la tercera palabra).

Esto significa que la fórmula no solo debe verificar los espacios, sino también manejar los errores si no hay espacios o si hay muy pocos espacios. La comprobación de errores significa que la fórmula se vuelve mucho más larga:

=IF(ISERR(LEFT(A1,1)&MID(A1,SEARCH(" ",A1)+1,1)

&MID(A1,SEARCH(" ",A1,SEARCH(" ",A1)+1)+1,1)

&MID(A1,SEARCH(" ",A1,SEARCH(" ",A1,SEARCH(" ",A1)+1)+1)+1,1)), IF(ISERR(LEFT(A1,1)&MID(A1,SEARCH(" ",A1)+1,1)

&MID(A1,SEARCH(" ",A1,SEARCH(" ",A1)+1)+1,1)), IF(ISERR(LEFT(A1,1)&MID(A1,SEARCH(" ",A1)+1,1)), IF(ISERR(LEFT(A1,1)),"",LEFT(A1,1)),LEFT(A1,1)&MID(A1,SEARCH(" ",A1)+1,1)), LEFT(A1,1)&MID(A1,SEARCH(" ",A1)+1,1)&MID(A1,SEARCH(" ",A1, SEARCH(" ",A1)+1)+1,1)),LEFT(A1,1)&MID(A1,SEARCH(" ",A1)+1,1)

&MID(A1,SEARCH(" ",A1,SEARCH(" ",A1)+1)+1,1)

&MID(A1,SEARCH(" ",A1,SEARCH(" ",A1,SEARCH(" ",A1)+1)+1)+1,1))

Esta fórmula manejará, correctamente, cualquier cosa de 0 a 4 palabras en una cadena. También asume que la cadena no comienza ni termina con un espacio y que no contiene múltiples números de espacios entre palabras. Si desea manejar una mayor cantidad de palabras u otras posibles complicaciones (como la cantidad de espacios entre palabras), entonces es mejor usar una función definida por el usuario.

Hay varias formas en las que una función definida por el usuario podría extraer los caracteres iniciales de las palabras de una cadena. De hecho, recibí bastantes variaciones que logran lo mismo. El siguiente ejemplo, sin embargo, es quizás el código más conciso que encontré:

Function Initials1(Raw As String) As String     Dim Temp As Variant     Dim J As Integer

Application.Volatile     Temp = Split(Trim(Raw))



For J = 0 To UBound(Temp)

Initials1 = Initials1 & Left(Temp(J), 1)

Next J End Function

Este código funcionará en cualquier versión de VBA a partir de Excel 2000. La función Dividir «desgarra» una cadena según el lugar en el que aparecen los espacios. Las palabras individuales en la cadena se colocan en una matriz (en este caso, Temp) donde luego puede acceder a palabras individuales. Para usar la función en su hoja de trabajo, simplemente use algo como esto:

=Initials1(A1)

Si está utilizando una versión de Excel que no es compatible con la función Split, el siguiente código también funcionará bien:

Function Initials2(Raw As String)

Dim p As Integer

Application.Volatile     Initials2 = ""

p = 0     Do         Initials2 = Trim(Initials2) & Mid(Raw, p + 1, 1)

p = InStr(p + 1, Raw, " ")

Loop Until p = 0 End Function

_Nota: _

Si desea saber cómo usar las macros descritas en esta página (o en cualquier otra página de los sitios ExcelTips), he preparado una página especial que incluye información útil.

link: / excelribbon-ExcelTipsMacros [Haga clic aquí para abrir esa página especial en una nueva pestaña del navegador].

ExcelTips es su fuente de formación rentable en Microsoft Excel.

Este consejo (8661) se aplica a Microsoft Excel 97, 2000, 2002 y 2003. Puede encontrar una versión de este consejo para la interfaz de cinta de Excel (Excel 2007 y posterior) aquí:

link: / excelribbon-Pulling_Initial_Letters_from_a_String [Extrayendo letras iniciales de una cadena].