ORDENAR LAS PALABRAS DE UNA CELDA ALFABÉTICAMENTE

Saludos a todos 🙂

Espero que vaya muy bien. Hoy vamos a trabajar con matrices en VBA para realizar un ejercicio que suele ser bastante habitual: ordenar el contenido de una celda alfabéticamente. Y resulta útil cuando necesitamos ordenar listados de información, por ejemplo una serie de nombres, de frutas, etc.

Imaginad que tenéis en una serie de celdas la siguiente información:

ORDENAR LAS PALABRAS DE UNA CELDA ALFABETICAMENTE

Efectivamente son tres listados diferentes, con nombres de personas, de frutas y de árboles y sin ningún criterio de ordenación. La tarea es ordenar el contenido de cada celda alfabéticamente, y eso o bien lo hacemos a mano, con una combinación de fórmulas o con VBA. La mejor opción será VBA, ya que construiremos nuestra propia función para resolver este tipo de tareas.

Vamos a usar esta macro:

Function OrdenarAlfa(ByVal Micelda As String)
'Declaramos las variables
Dim Matriz As Object, Palabra As Variant
Dim alfaDato As Variant, iPalabra As String
'Creamos colección arraylist para ir agregando los elementos de la matriz
Set Matriz = CreateObject("System.Collections.ArrayList")
'Por cada objeto/palabra contenida en la celda seleccionada
For Each Palabra In Split(Micelda, " ")
'Añadimos cada palabra a la matriz con un bucle
Matriz.Add Palabra
Next Palabra
'Una vez la matriz creada la ordenamos
Matriz.Sort
'Pasamos los datos ya ordenados a una cadena de texto
For Each alfaDato In Matriz
iPalabra = iPalabra & " " & alfaDato
Next alfaDato
OrdenarAlfa = Trim(iPalabra)
'Limpiamos variable de objeto
Set Matriz = Nothing
End Function

Con esta función (OrdenarAlfa) seleccionamos la celda, pasamos todas las palabras a una matriz, la ordenamos alfabéticamente y luego pasamos los datos ordenados a una cadena (string) que pasamos a la función y por lo tanto a la celda que contiene la fórmula.

En este ejemplo estoy suponiendo que entre cada palabra hay un espacio en blanco, si la separación fuese una coma “,” (o cualquier otro símbolo), solo tenéis que cambiarlo en la macro en esta línea:

For Each Palabra In Split(Micelda, ",")

Y si queréis que las palabras resultantes de la fórmula también tengan una coma de separación, debéis cambiarlo en esta otra línea:

iPalabra = iPalabra & ", " & alfaDato

y modificar el dato que pasa a la función:

OrdenarAlfa = Trim(Mid(iPalabra, 2, Len(iPalabra)))

El resultado es el siguiente:

ORDENAR LAS PALABRAS DE UNA CELDA ALFABETICAMENTE1

Ya tenemos todas las informaciones ordenadas alfabéticamente y con la ayuda de una nueva función. Obviamente, la podéis adaptar a un proceso automático o para mostrar los datos en un formulario, las posibilidades son muchas.

Y eso es todo, espero que os resulte de interés 🙂

Descarga el archivo de ejemplo pulsando en: ORDENAR LAS PALABRAS DE UNA CELDA ALFABETICAMENTE

¿Te ha resultado de interés?, puedes apoyar a Excel Signum con una pequeña donación.

Donate Button with Credit Cards

¡¡Muchas gracias!!

Anuncios

¿Te ha gustado?. Deja un comentario

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s