Ordenar rango de datos por columna específica en Excel VBA

Iqra Hasnain 21 junio 2023
  1. Ordenar rango de datos por columna específica en VBA
  2. Ordene el rango de datos por columna específica usando el método Range.Sort() en VBA
  3. Ordene el rango de datos por columna específica grabando una macro en VBA
  4. Ordene el rango de datos por columna específica usando la clasificación de un solo nivel en VBA
  5. Ordene el rango de datos por columna específica usando la clasificación de niveles múltiples en VBA
  6. Ordenar rango de datos por columna específica usando diferentes parámetros en VBA
Ordenar rango de datos por columna específica en Excel VBA

Presentaremos diferentes métodos para ordenar un rango de datos por columna específica en Excel VBA.

Ordenar rango de datos por columna específica en VBA

Excel tiene funciones integradas para ordenar los datos disponibles en la cinta y el cuadro de diálogo de ordenación. Sin embargo, es posible que necesitemos usar VBA para ordenar datos siempre que se requiera ordenar datos en la codificación.

Podemos ahorrar mucho tiempo y energía creando una macro para el proceso de clasificación de datos dados. Macro nos permite hacer todo el proceso con un solo clic.

La clasificación de datos se puede realizar utilizando múltiples técnicas, y podemos elegir un método adecuado para nuestros datos. Discutiremos estos métodos uno por uno en las siguientes secciones.

Ordene el rango de datos por columna específica usando el método Range.Sort() en VBA

El método Range.Sort() puede ordenar rápidamente los datos en VBA. Sin embargo, se deben definir algunos parámetros adicionales al ordenar los datos a través de VBA.

Estos parámetros incluyen Clave, Orden y Encabezado.

  1. Clave: especifica la columna que queremos ordenar.
  2. Orden - especifica el tipo de orden: descendente o ascendente.
  3. Encabezado: le dice a VBA si los datos del Encabezado están incluidos en el proceso de clasificación o no.

A continuación se muestra un código con el rango B1 a B13, utilizando la columna B1, en orden ascendente y un encabezado para los datos utilizando el código VBA.

Ejemplo:

# VBA
Sub usingRangeSort()
Range("B1:B13").Sort Key1:=Range("B1"), _
    Order1:=xlAscending, _
    Header:=xlYes
End Sub

Producción:

Ordenar en VBA usando Range.Sort

Como puede ver en el ejemplo, podemos ordenar un rango usando el método Range.Sort().

Ordene el rango de datos por columna específica grabando una macro en VBA

Grabar una macro para la clasificación de VBA puede ser complicado ya que necesita involucrar todos los parámetros en la clasificación de datos, pero puede ser útil ya que nos muestra cómo el código hará el trabajo. Este método aplicado en una hoja de cálculo de Excel puede verse como se muestra a continuación.

Ejemplo:

# vba
Sub savedMacro()
Range("A1:B13").Sort Key1:=Range("A1"), _
    Order1:=xlAscending, _
    Header:=xlYes
End Sub

Producción:

Ordenar en VBA usando macro guardada

Como puede ver en este ejemplo, podemos guardar la macro y usarla en diferentes hojas cuando lo deseemos. Un código puede someterse fácilmente a un proceso de copiar y pegar que se aplica en varias hojas de cálculo de Excel y, por lo tanto, puede acelerar el proceso de datos masivos a través de la codificación VBA.

Ordene el rango de datos por columna específica usando la clasificación de un solo nivel en VBA

Este proceso es muy fácil ya que no necesita incluir los parámetros uno por uno, sino que utiliza los parámetros predeterminados de forma independiente. Un usuario debe establecer los parámetros de todas las hojas de trabajo que involucran por defecto.

A continuación se muestra un ejemplo del método.

# vba
Sub SortWithSingleLevel()

Worksheets("Sheet1").Sort.SortFields.Clear

Range("A1:B13").Sort Key1:=Range("A1"), Header:=xlYes
End Sub

Producción:

Clasificación de un solo nivel en VBA

Como puede ver en el ejemplo anterior, podemos ordenar los datos de la hoja usando el rango con clasificación de un solo nivel. Ahora, imaginemos si queremos hacer lo mismo para la clasificación de múltiples niveles.

Ordene el rango de datos por columna específica usando la clasificación de niveles múltiples en VBA

Podemos involucrar más de un nivel mientras ordenamos los datos a través del código VBA.

Por ejemplo, si vamos a ejecutar un código que ordene primero Clave1 y luego Clave2. Involucramos los dos pedidos, Order1 y Order2, es decir, Order1 está asociado con Key1 y Order2 está asociado con Key2.

El código funciona como se muestra a continuación.

# vba
Sub SortWithMultiLevel()

Worksheets("Sheet1").Sort.SortFields.Clear

Range("A1:B13").Sort Key1:=Range("A1"), Key2:=Range("B1"), Header:=xlYes, _
Order1:=xlAscending, Order2:=xlDescending

End Sub

Producción:

Clasificación multinivel en VBA

Como puede ver en el ejemplo anterior, podemos ordenar nuestro rango con una clasificación de niveles múltiples usando varias claves y órdenes.

Ordenar rango de datos por columna específica usando diferentes parámetros en VBA

Ahora, discutiremos diferentes parámetros que se pueden usar para ordenar en VBA.

Ordenar datos con el parámetro SortOn en VBA

Esto define el parámetro sobre el que queremos que se realice el proceso de clasificación de la fecha. El parámetro puede ser valores de celda, color de fuente o color de celda (fondo).

La configuración predeterminada es el valor de la celda, y funciona como se muestra a continuación.

# vba
SortOn:= xlSortOnValues

Ordenar datos con el parámetro Orden en VBA

El orden se puede elegir como orden ascendente o descendente (como se discutió en el artículo anterior). Sin embargo, la configuración predeterminada es de orden ascendente y la sintaxis es la que se muestra a continuación.

# vba
Order:= xlAscending

Ordenar datos con el parámetro DataOption en VBA

Este parámetro define cómo un código VBA ordena los datos numéricos y de texto. Podemos ordenar números y textos por separado usando este parámetro. La sintaxis que se utiliza es la que se muestra a continuación.

# vba
DataOption:= xlSortNormal

Ordenar datos con el parámetro Header en VBA

Describe si el encabezado de los datos debe incluirse en el proceso de clasificación o no. La sintaxis de clasificación de encabezados se muestra a continuación.

# vba
Header:= xlYes

Si no hay encabezado y queremos comenzar a ordenar desde el principio, podemos usar el siguiente código a continuación.

# vba
Header:= xlNo

Ordenar datos con el parámetro MatchCase en VBA

La clasificación MatchCase define si el proceso distingue entre mayúsculas y minúsculas o no. La sintaxis de clasificación MatchCase se muestra a continuación.

# vba
MatchCase:= False

Ordenar datos con el parámetro Orientación en VBA

El parámetro define la orientación de la clasificación de arriba hacia abajo oa través de las columnas. La sintaxis predeterminada se muestra a continuación.

# vba
Orientation:= xlTopToBottom