Hojas de cálculo en Excel - página principal

Extraer la incial de cada palabra

Esta función personalizada que hoy os presento, no es que tenga excesiva utilidad, pero bueno, nos sirve para aprender más sobre el uso de vectores, o arrays. Es lo que tiene Excel, que nos permite construirnos nuestras propias funciones, de la misma forma que tenemos otras ya predefinidas, como SUMA, CONTAR, SI, o FECHA, por poner solo unos ejemplos.

Imaginemos que tenemos en una columna, un listado con nombres de personas (nombre y dos apellidos), y que deseamos poner en la columna contigua, las iniciales de cada uno de los nombres. Podemos hacerlo a mano, de tal forma que si tenemos por ejemplo en la lista, una persona llamada Irene Hermosilla Martín, en la columna continua deberemos poner IHM, a mano.

Para hacerlo de una forma más profesional, vamos a construir una función que nos permita hacer eso de forma mucho más rápida, para lo cual copiaremos y pegaremos esto en un módulo:


Function iniciales(celda As Range)
'Descomponemos el texto, en partes,
'para lo cual indicamos el delimitador " ", aunque
'por defecto, podríamos haberlo omitido, pues es ese mismo
'(espacio), con lo cual tendremos tantas palabras,
'como estén separadas por espacios

texto = Split(Trim(celda), " ", -1, 1)
'miramos las palabras que componen el texto,
'para lo cual le decimos que recorra desde el primer
'valor de la matriz (empieza en cero), hasta el máximo
'valor (nº de la última palabra) que lo obtenemos con el UBound

For i = 0 To UBound(texto)
'ponemos la inicial en mayúsculas, y el resto
'de las letras, simplemente no nos interesan

texto(i) = UCase(Left(texto(i), 1))
Next
'Unimos los textos, con la función Join
texto = Join(texto)
'quitamos el espacio que separa las iniciales
texto = Replace(texto, " ", "")
'pasamos los datos a la función
iniciales = texto
End Function

¿Y como llamamos a esa función?. Pues simplemente así:

=iniciales(celda)

celda: corresponde a la celda, cuyas iniciales deseamos extraer (A12, B33, M58, o la celda de que se trate).

He aquí un ejemplo donde ponemos en la fila de abajo, las iniciales del nombre que aparece justo encima. Fijaos en la barra de fórmulas donde aparece lo de =iniciales(B3):



11 comentarios:

malpama dijo...

Hola, muchísimas gracias por tu ayuda, me han sido utilisimas tus macros. Abusando de la confianza, espero pudieras ayudarme con un proyecto con el q he estado batallando mucho, el cual es el obtener la CURP (clave unica de registro de poblacion) esta se obtiene solo en mexico, si puedes o tienes tiempo de ayudarme, te dejo mi correo: malpama@gmail.com

El pilt®afilla - www.3piesalgato.com dijo...

La verdad es que desconozco que es el CURP, pero por aquí hablan sobre como calcularlo: http://www.exceluciones.com/portal/viewtopic.php?t=975

Salu2, y gracias por tu comentario.

Unknown dijo...

Me parece excelente su página, seguro la visitare mucho en el futuro, llegue aqui buscanco encontrar la forma de que en una celda de excel pueda poner automaticamente el nombre de la hoja donde esta esa celda, ej. si la hoja se llama Enero, en la celda A1 aparezca ese nombre: Enero, ojala y me puedan ayudar. saludos,

El pilt®afilla - www.3piesalgato.com dijo...

Échale un vistazo a este artículo: Obtener el nombre de una hoja

Saludos.

Anónimo dijo...

ya existe una función en excel que nos permite hacer eso extrae(texto de donde se extrae, posición inicial, num. de caracteres a extraer) asi que si quieren extraer la inicial solo ponen =extrae(A1,1,1) donde A1 es la celda donde está el texto.
Saludos

El pilt®afilla - www.3piesalgato.com dijo...

Gracias por tu aporte, pero ten en cuenta que estamos hablando de las iniciales de varias palabras dentro de una celda (mira la imagen del artículo), y no de una sola palabra.

Además, este blog está orientado principalmente a macros, así que teníamos que usar algún macro para hacer esto :-)

Anónimo dijo...

Excelente página de Excel.
Hace días que tengo una duda y paso a plantarla a ver si tiene solución:
¿Es posible cambiar el color de la primera letra de una palabra que esté en una celda?

Saludos y gracias si podeis ayudarme.

El pilt®afilla - www.3piesalgato.com dijo...

Prueba con este ejemplo. Escribe una palabra en una celda, y ejecuta este macro:

Sub Primera_en_color()
With ActiveCell.Characters(Start:=1, Length:=1).Font
.ColorIndex = 3
End With
End Sub

Saludos.

Anónimo dijo...

Gracias por la respuesta Javier. Pero no me soluciona el problema. Solamente quiero que cambie de color la 1ª letra de una palabra que tiene la celda. (P.e: En la palabra "CASA" que la "C" cambie a otro color). La macro que me das cambia toda la palabra de color.

Muy agradecido por tu atención.

El pilt®afilla - www.3piesalgato.com dijo...

El macro que te he pasado, hace precisamente eso, cambiar el color de la primera letra de la primera palabra. Vamos, que si escribes Casa, la C te la pone de color rojo, y el resto de la palabra (asa), te la mantiene en el color que tuviera (normalmente negro).

Probado en Excel 2003 y Excel 2010.

Anónimo dijo...

Tienes toda la razón Javier. Lo he probado escribiendo una palabra en una celda y al ejecutar la macro funciona bien.
El problema es que no me funciona en las palabras que necesito aplicarlo. Estas vienen copiadas de otra Hoja mediante una fórmula (=Hoja1!$A$2) y en ellas me cambia el color de toda la palabra.
No sé si es posible hacerlo. Yo andaba jugando con fórmulas pero no lo consigo.

Gracias de nuevo, eres muy amable.