ORDENAR EL CONTENIDO NUMÉRICO DE UNA CELDA

Hola a todos:

El post de hoy, como de costumbre, surge como respuesta a una consulta. El lector buscaba una solución para poder ordenar el contenido números de una celda (pero con los números separados por comas).

Sobre este asunto ya he escrito varias entradas relacionadas, en concreto en este post: ORDENAR LAS PALABRAS DE UNA CELDA ALFABÉTICAMENTE.

Aunque en ese ejemplo trabajaba con palabras, una sencilla modificación podría servir para realizar el ejercicio. Por ejemplo, si tenemos este número en una celda: 8,2,9,9,6,5 y queremos este dato: 2,5,6,8,9,9 utilizaremos esta función (UDF):

Function OrdenarNumCom(ByVal micelda As String)
'Declaramos las variables
Dim Matriz As Object, numero As Variant, num As Variant
Dim inum 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 numero In Split(micelda, ",")
'Añadimos cada palabra a la matriz con un bucle
Matriz.Add numero
Next numero
'Una vez la matriz creada la ordenamos
Matriz.Sort
'Pasamos los datos ya ordenados a una cadena de texto
For Each num In Matriz
inum = inum & "," & num
Next num
OrdenarNumCom = Trim(Mid(inum, 2, Len(inum)))
'Limpiamos variable de objeto
Set Matriz = Nothing
End Function

Si lo que queremos hacer es ordenar los números pero sin comas, por ejemplo: 715017 y queremos obtener esto: 011577 utilizaremos esta macro:

Function Ordenanum(ByVal micelda As String)
'Declaramos las variables
Dim Matriz As Variant, num As Variant, inum As String
Dim numero As String, j As Long
'Creamos colección arraylist para ir agregando los elementos de la matriz
Set Matriz = CreateObject("System.Collections.ArrayList")
'Por cada núumero contenido en la celda seleccionada
For j = 1 To Len(micelda) Step 1
numero = Mid(micelda, j, 1)
'Añadimos cada número a la matriz con un bucle
Matriz.Add numero
Next j
'Una vez la matriz creada la ordenamos
Matriz.Sort
'Pasamos los datos ya ordenados
For Each num In Matriz
inum = inum & "" & num
Next num
Ordenanum = inum
'Limpiamos variable de objeto
Set Matriz = Nothing
End Function

Con estas dos funciones podremos realizar perfectamente el trabajo. Y en el caso de la función que ordena los números separados por comas, si el separador es otro, solo tenemos que cambiarlo en el código y funcionará perfectamente.

ORDENAR EL CONTENIDO NUMÉRICO DE UNA CELDA

Y esto es todo, espero que os sea de utilidad.

Descarga el archivo de ejemplo pulsando en: ORDENAR EL CONTENIDO NUMÉRICO DE UNA CELDA

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

Donate Button with Credit Cards

¡¡Muchas gracias!!

Mediante la suscripción al blog, la realización comentarios o el uso del formulario de contacto estás dando tu consentimiento expreso al tratamiento de los datos personales proporcionados según lo dispuesto en la ley vigente (LOPD). Tienes más información al respecto en esta página del blog: Política de Privacidad y Cookies

Anuncios

¿Te ha gustado?, Realiza 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 )

Google photo

Estás comentando usando tu cuenta de Google. 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 )

Conectando a %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.