¿cómo ordenar el rango en vba?
Para ordenar un rango de celdas usando VBA, debe usar el método «SORT» que le permite configurar una sola clave (columna) o varias claves (para varias columnas) para ordenar. También puede establecer el orden (ascendente o descendente) que desea ordenar y puede especificar si tiene un encabezado o no.
Ordenar un rango con VBA
- Utilice el objeto de rango para especificar el rango que desea ordenar.
- Escriba un punto e ingrese el método de clasificación.
- Especifique la clave que desea utilizar para ordenar.
- Establezca el orden de clasificación.
- Menciona si tienes encabezado o no.
Range("A1:A11").Sort Key1:=Range("A1"), _ Order1:=xlAscending, _ Header:=xlYes
En el código anterior utilizó el rango A1:A11, y en el método de clasificación utilizó el orden ascendente, mencionó que tiene un encabezado en el rango.
Comprender el método de clasificación de VBA
Antes de escribir una macro para ordenar un rango, es mejor profundizar en el método de clasificación y comprender sus argumentos.
Sort (Key1, Order1, Key2, Type, Order2, Key3, Order3, _ Header, OrderCustom, MatchCase, Orientation, SortMethod, _ DataOption1, DataOption2, DataOption3)
Estos son los argumentos más importantes que utilizará en la vida real.
- Clave : aquí debe definir una celda cuya columna desea utilizar como base de clasificación.
- Orden : Orden en el que desea ordenar la columna (ascendente/descendente).
- Encabezado : una constante para especificar si tiene o no un encabezado o si desea que VBA lo adivine.
Ordenar en orden descendente
En el siguiente código, he utilizado ‘xlDescending’ para ordenar la columna de monto en orden descendente.
Range("A1:A13").Sort Key1:=Range("A1"), _ Order1:=xlDescending, _ Orientation:=xlSortColumns
Usar múltiples columnas (claves) para ordenar
También puede utilizar varias columnas para ordenar un rango. Tomemos un ejemplo de la siguiente tabla donde tiene varias entradas con nombres de empleados y ciudades, y necesita ordenarlas por nombre y ciudad.
Aquí está el código que necesitas usar:
Range("A1:C13").Sort Key1:=Range("A1"), _ Order1:=xlAscending, _ Key2:=Range("B1"), _ Order1:=xlAscending, _ Header:=xlYes
Como puede ver en el código, tiene la clave1 y la clave2. En la clave1 tienes la columna con el nombre del empleado y en la clave2 tienes la columna de ciudad. Para ambas columnas, el orden de clasificación es ascendente y los encabezados están ahí.
Nota: Puede usar esto como cualquier columna que desee usar como base para ordenar usando claves y orden.
Cambiando la orientación del destino
Cuando normalmente ordena datos en Excel, de forma predeterminada puede ordenarlos usando columnas. Pero desde las opciones de clasificación, puede cambiar la orientación de clasificación de izquierda a derecha en lugar de de arriba a abajo.
De manera similar, tiene un argumento en el método de clasificación para cambiar la orientación ( enlace ).
Range("A1:C13").Sort Key1:=Range("A1"), _ Order1:=xlAscending, _ Orientation:=xlSortRows