Uno de los detalles más importantes a la hora de presentar la información, es sin duda, la estética y la funcionalidad.
En ese sentido, cuando generamos un informe tenemos la tendencia a no reparar en la necesidad de que los datos que estamos mostrando aparezcan ordenados de alguna forma.
Os voy a presentar una macro que realiza esa misma función, ordena nuestros datos de forma alfabética.
Supongamos un rango de celdas de A1 a F1 (aquí estaría el cabecero de la columna). En la columna B1 supongamos también que hay nombres y en el resto de columnas diferentes indicadores. Pues bien, esta macro va a ordenar siempre la columna B1 (obviamente se puede cambiar de columna según nuestras necesidades) alfabéticamente hasta un rango de 65.000 filas.
Siempre podréis, en caso de necesidad, modificar los parámetros del código según vuestras necesidades.
Private Sub Ordenar_alfabéticamente()
Range("A1:F1").Select
Selection.AutoFilter
Range("A1:F65000").Sort Key1:=Range("B1"), Order1:=xlAscending, Header:= _
xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
Range("A1:F1").Select
Selection.AutoFilter
Range("A1").Select
End Sub
Descarga el archivo pulsando en: ORDENAR ALFABÉTICAMENTE
PD: Si deseáis realizar esta tarea en columnas independientes, os recomiendo visitar la siguiente entrada: Ordenar columnas de forma independiente
¿Te ha resultado de interés?, puedes apoyar Excel Signum con una pequeña donación.
¡¡Muchas gracias!!
Muy bueno Amigo, quisiera consultarle si se puede realizar este procedimiento en diferentes filas, pues mis datos se clasifican en varias Filas
Me gustaLe gusta a 1 persona
Hola Caleb,
Se puede hacer, pero supongo que te refieres a columnas. Para hacerlo, realmente lo que debes hacer es dar la instrucción de que te ordene cada columna en el orden que desees, modificando la macro quedaría así, en el ejemplo con la Macro de ordenar por ID.
Sub Ordenar_alfabéticamente_id()
Range(“A1:F1”).Select
Selection.AutoFilter
Range(“A1:A65000”).Sort Key1:=Range(“A1”), Order1:=xlAscending, Header:= _
xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
Range(“A1:F1”).Select
Selection.AutoFilter
Range(“A1”).Select
Range(“A1:F1”).Select
Selection.AutoFilter
Range(“B1:B65000”).Sort Key1:=Range(“B1”), Order1:=xlAscending, Header:= _
xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
Range(“A1:F1”).Select
Selection.AutoFilter
Range(“A1”).Select
Range(“A1:F1”).Select
Selection.AutoFilter
Range(“C1:C65000”).Sort Key1:=Range(“C1”), Order1:=xlAscending, Header:= _
xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
Range(“A1:F1”).Select
Selection.AutoFilter
Range(“A1”).Select
Range(“A1:F1”).Select
Selection.AutoFilter
Range(“D1:D65000”).Sort Key1:=Range(“D1”), Order1:=xlAscending, Header:= _
xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
Range(“A1:F1”).Select
Selection.AutoFilter
Range(“A1”).Select
Range(“A1:F1”).Select
Selection.AutoFilter
Range(“E1:E65000”).Sort Key1:=Range(“E1”), Order1:=xlAscending, Header:= _
xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
Range(“A1:F1”).Select
Selection.AutoFilter
Range(“A1”).Select
Range(“A1:F1”).Select
Selection.AutoFilter
Range(“F1:F65000”).Sort Key1:=Range(“F1”), Order1:=xlAscending, Header:= _
xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
Range(“A1:F1”).Select
Selection.AutoFilter
Range(“A1”).Select
End Sub
Este ejemplo se puede usar si tienes pocas columnas, en caso de ser muchas y para no hacer un código lento y extenso, puedes visitar el siguiente enlace de microsoft donde existe una macro para realizar el proceso: https://support.microsoft.com/kb/247311/es?wa=wsignin1.0
Saludos.
Me gustaMe gusta
Segu, disculpa pero por ejemplo yo tengo una hoja que llega hasta la celda (“YU”) creo que copiar y pegar hasta llegar esta celda es una lata…
No habrá una forma de poner el rango desde A hasta YU sin copiar y pegar toda la vida?
Gracias.
Me gustaMe gusta
Hola Palma,
Cuando dices que tienes una hoja con datos hasta la columna YU y quieres seleccionar el rango desde A … sin copiar y pegar, exactamente a que te refieres, es decir, deseas ordenar las columnas hasta ese rango? en ese caso, puedes echar mano del apunte que anexé de microsoft:
https://support.microsoft.com/en-us/kb/247311/es?wa=wsignin1.0
En todo caso, puedes enviarme un ejemplo de los datos que necesitas ordenar y como quieres que te aparezcan ordenados e intento trasladarte el ejemplo práctico.
Puedes probar también como en el ejemplo que pongo en el post donde sí se selecciona un rango.
Estamos en contacto,
Saludos,
Me gustaMe gusta
Pingback: ORDENAR COLUMNAS DE FORMA INDEPENDIENTE | Excel Signum
Hola tengo un archivo e intente ordenar con tu macro pero me da errores cambie las celdas de acuerdo a mi necesidad pero no logro que se ordene; me gustaría enviarte el archivo para que lo revisaras por favor y Gracias..
Me gustaMe gusta
Hola Fran, puedes enviar el archivo a excelsignum@yahoo.es en cuanto tenga un momento, lo reviso. Saludos
Me gustaMe gusta
Muchas Gracias
Me gustaMe gusta
Buenos días,
¿Sabrías adaptar esta macro para ordenar solo las filas selecciónadas con el raton, y ordenar alfabeticamente la columna P en orden cresciente?
Tengo que ordenar asi 4.000 filas, asi que si lo consigues y vives por Madrid te invito a una caña 🙂
Saludos,
Fran
Me gustaMe gusta
Hola Fran:
Podrías enviar al correo de la web un ejemplo simple en un archivo en una pestaña la info como la tienes y en otra como te gustaría que quedase. Con breve explicación? Así verificó la mejor forma de hacer el trabajo. Sería interesante saber si será una tarea periódica y con la misma estructura de datos. En cuanto lo vea y tenga un momento te lo envío. El correo es excelsignum@yahoo.es luego hablamos de las cañas 🙂
Me gustaMe gusta
Muchas gracias Segu una macro sencilla y eficaz, seguiré esta web que me parece muy interesante.
Me gustaMe gusta
Muchas gracias por tu comentario Sergio, espero que la web te sea de utilidad y disfrutes con el contenido.
Saludos!
Me gustaMe gusta
Amigo me gustaría saber la macro que ordene alfabéticamente desde la celda D15 pero que desbloquee algunas columnas y luego lo vuelva a cerrar mil gracias…
Me gustaMe gusta
Hola Wider,
Suponiendo que la hoja es la 1 y que cuando te refieres a desbloquear es que tenías la página protegida esta sería la macro:
Sub ORDENAR()
Dim rRango As Range
Dim cCell As Range
'desprotegemos documentos, debes introducir la contraseña
Sheets(1).Unprotect "CONTRASEÑA"
Range("D15").Select
'seleccionamos desde D15 tanto hacía la derecha como la abajo hasta que finalicen los datos
Range(Selection, ActiveCell.SpecialCells(xlLastCell)).Select
Set rRango = Selection
Set cCell = ActiveCell
'ordenamos
If cCell Empty Then
rRango.Sort Key1:=cCell, Order1:=xlAscending, Header:=xlYes
End If
'volvemos a protgeger
Sheets(1).Protect "CONTRASEÑA"
End Sub
Saludos
Me gustaMe gusta
muy bueno el archivo y me sirve de mucho, pero solo tengo una duda, ya que quiero continuar con estas macros en este mismo archivo, pero agregandola a mas hojas, mi pregunta, ¿como le hago para insertar los botones “ORDENAR POR PRODUCTO” y “ORDENAR POR ID”, con el insertar boton (control de formulario), o con el boton “boton de comando (controles activex)?
Me gustaMe gusta
Hola Roberto,
Utiliza el botón de control de formulario, una vez que lo insertes te pedirá que lo vincules a una macro. Es la forma de hacerlo.
Saludos y me alegro que te haya sido de utilidad.
Te dejo también otros enlaces en la web que pueden ser de tu interés:
https://excelsignum.com/2015/06/07/ordenar-columnas-de-forma-independiente/
https://excelsignum.com/2016/03/12/ordenar-un-rango-mediante-seleccion/
Me gustaMe gusta
Me sera de gran utilidad.
Me gustaMe gusta
Hola; excelente aporte. Solo una consulta relacionada con la ordenación: Tengo una columna “A” con los nombres, Tengo una columna “B” con las edades, y tengo una COLUMNA “D” con el domicilio. Estas columnas desbloqueadas para cargar datos. La columna intermedia “C” tiene fórmula y bloqueada. ¿Qué macro uso para la ordenación automática por nombres con HOJA PROTEGIDA?. Muchas gracias!
Me gustaMe gusta
Hola Ricardo: puedes probar con la respuesta que ke doy a Wider en este post, ( los comentarios). Si no te funciona envíame un ejemplo de lo que tienes y como quieres que sea el resultado. En un archivo Excel, por supuesto.
Me gustaMe gusta
Un gusto he buscado por la web una macro que me ayude a ordenar alfabéticamente los resultados de una selección previa de un usuario por asi decirlo, soy sincero no he probado esta en especifico pero mi problema es que todas las que pruebo funcionan al ingresar los datos, o al momento de que exista un cambio en la hoja el problema es que no me ordena al ser resultados de una formula por que pasa esto y seria viable o como le digo a la macro que son resultados de fórmula?
Me gustaMe gusta
Mike:
Prueba la macro a ver si te funciona. Si no lo consigues, envíame un ejemplo en un archivo del problema y trato de ayudarte.
Saludos.
Me gustaMe gusta