Crear botón macro para ordenar los valores de una tabla
Me gustaría crear un botón macro que automáticamente me ordenase los valores de una tabla de menor a mayor.
Tengo la siguiente tabla:
Columna A: nombres de participantes. Un total de 15.
Columnas B, C, D, E, F. Las puntuaciones de esos participantes.
Columna G: Suma de todas las puntuaciones de ese participante.
Y me gustaría crear un botón que automáticamente me ordenase esa tabla de menor a mayor valor, según el resultado de la columna G (la suma total). Pero tomando como rango todos los valores.
Es decir:
Seleccionar rango, A1:F15
Orden personalizado
Ordenar por, columna G
Criterio, de menor a mayor
Respuesta de Dante Amor
2
una pregunta ! he utilizado esta macro y funciona perfectamente....peroooSub ordenar()Set L1 = Sheets("ALBARAN")With L1.Sort .SortFields.Clear: .SortFields.Add Key:=Range("B22:B48") .SetRange Range("A22:J48"): .Header = xlYes: .ApplyEnd WithEnd SubMi problema es que yo introduzco el la linea 22, 23, 24... sucesivamente y cuando pulso ordenar empieza a ordenarme abajo si tengo cuatro datos en las ultimas cuatro lineas.... en B45, B46, B47, B48. Cual es mi error?? Gracias de anteanoDante Amor - maria fermin
No entendí cuál es el problema, según lo que pusiste, ordena de B22 a B48 - Dante Amor
El problema es que yo quiero que ordene alfabéticamente desde la celda B22 (es donde introduzco el primer dato). Al introducir los datos pongo 3 datos en B22, B23 y B24 y al pulsar el botón de ordenar estos se ordenan en B46, B47, B48... dejando todas las primeras desde B22 hasta B45 vacías. Dante Amor - maria fermin
Primero, en esta línea: .SetRange Range("A22:J48"), si tienes encabezados debería ser A21: .SetRange Range("A21:J48"). Segundo, revisa que en las celdas de B25 a B48 tengas realmente vacíos, es probable que en alguna celda tengas Blancos o espacios en blanco, te sugiero que borres el contenido de todas las celdas desde B22 hasta B48. Es por eso que te ordena los datos al final, porque tienes espacios en blanco en las celdas. - Dante Amor
Dante Amor en el rango de celdas B22; B48 tengo formulas, yo introduzco los datos en A22; A48 (un ID de operario) en las celdas B22; B48 busca según la fórmula el nombre del operario. Después pulso el botón "ORDENAR" y es cuando sucede eso... todos los datos se van al final de la lista - maria fermin
No es que vayan al final, lo que sucede es que si tienes una fórmula; y el resultado de la fórmula es un blanco "", entonces al ordenar (manual o con la macro), los blancos van antes de cualquier texto. Tendrías que cambiar la macro para que te ordene solamente lo que ya tiene Id de operario. Con gusto te ayudo a modificar la macro, crea una nueva pregunta, en el desarrollo de la pregunta escribe "Para Dante Amor", ahí me describes con detalle lo que necesitas. saludos - Dante Amor
Buen día Dante Amor disculpe que se le tendría que agregar al código para que ordene de manera descendente osea criterio de mayor a menor. -Carlos Martinez - Carlos Martinez
cambia esta línea .SortFields.Clear: .SortFields.Add Key:=Range("G2:G16") por esta .SortFields.Clear: .SortFields.Add Key:=Range("G2:G16"), Order:=xlDescending - Dante Amor
Una consulta cual sería la diferencia si quiero ordenar la misma información solo que ahora de mayor a menor - Alex Camargo
Utiliza: .SortFields.Clear: .SortFields.Add Key:=Range("G2:G16"), Order:=xlDescending - Dante Amor
Y si quiero acomodar 2 columnas? En el ejemplo columna G y columna B? - Benoni Mendez
Agrega un nivel, cambia esta línea: .SortFields.Clear: .SortFields.Add Key:=Range("G2:G16") por esta: .SortFields.Clear: .SortFields.Add Key:=Range("G2:G16"): .SortFields.Add Key:=Range("B2:B15") - Dante Amor
perfecto gracias y para agregar el orden descendiente - Benoni Mendez
revisa mi comentario del 11 mar. - Dante Amor
Ya perfecto. Ya por ultimo si quiero con el mismo botón filtrar 2 tablas con diferentes rangos en la misma hoja - Benoni Mendez
Te parece si creas una pregunta con todo lo que necesitas. Como podrás ver en los comentarios no puedo poner claramente el código. - Dante Amor