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:
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
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.
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,
Échale un vistazo a este artículo: Obtener el nombre de una hoja
Saludos.
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
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 :-)
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.
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.
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 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.
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.
Publicar un comentario