Tabla de contenido
Para ordenar en Excel con VBA debe aplicar el Rango.Ordenar En este artículo, le mostraremos cómo ordenar la columna en Excel con el botón Rango.Ordenar método de VBA .
Descargar el cuaderno de ejercicios
Puede descargar gratuitamente el libro de ejercicios de Excel desde aquí.
Ordenar columna con VBA.xlsm
Método Range.Sort en Excel VBA
Rango.Ordenar método en VBA ordena un rango de valores en Excel. Aquí Gama es una variable objeto que especifica el rango de celdas que queremos ordenar en orden ascendente o descendente.
A continuación se indican los parámetros que debe conocer al trabajar con este método.
Parámetro | Obligatorio/ Facultativo | Tipo de datos | Descripción |
---|---|---|---|
Clave | Opcional | Variante | Especifica el rango o la columna cuyos valores deben ordenarse. |
Pida | Opcional | XlSortOrder | Especifica el orden en que se realizará la clasificación.
|
Cabecera | Opcional | XlYesNoGuess | Especifica si la primera fila contiene cabeceras o no.
|
4 Métodos en la implementación de VBA para ordenar columnas en Excel
En esta sección, sabrá cómo ordenar una sola columna con y sin cabecera , varias columnas con y sin cabecera y cómo ordenar haciendo doble clic en la cabecera de una columna en Excel.
1. Incrustar VBA para ordenar una sola columna sin encabezado en Excel
Si desea ordenar una sola columna en su hoja Excel con VBA siga los pasos que se indican a continuación.
Esta es nuestra columna que vamos a ordenar con VBA código.
Pasos:
- Pulse Alt + F11 en su teclado o vaya a la pestaña Desarrollador -> Visual Basic para abrir Editor de Visual Basic .
- En la ventana de código emergente, en la barra de menús, haga clic en Insertar -> Módulo .
- Copie el siguiente código y péguelo en la ventana de código.
Sub SortSingleColumnWithoutHeader() Rango("B5:B15").Sort Clave1:=Rango("B5"), Orden1:=xlAscendente, Cabecera:=xlNo End Sub
Su código ya está listo para ejecutarse.
Toma,
- Clave1:=Rango("B5") → Especificado B5 para que el código sepa qué columna ordenar.
- Orden1:=xlAscendente → Especificado el orden como xlAscending para ordenar la columna en orden ascendente. Si desea ordenar la columna en orden descendente, escriba xlDescendente en su lugar.
- Cabecera:= xlNo → Como nuestra columna no tiene cabecera por lo que la especificamos con el carácter xlNo opción.
- Pulse F5 en el teclado o, en la barra de menús, seleccione Run -> Run Sub/UserForm También puede hacer clic en el botón pequeño icono Play en la barra de submenú para ejecutar la macro.
Verá que su columna es ahora ordenados de forma ascendente .
Observe que aquí hemos definido manualmente el intervalo de datos como Rango("B5:B15") .
Si desea modificar los datos añadiendo o eliminando valores, puede implementar el siguiente código que se actualiza automáticamente en función de las celdas del conjunto de datos.
Sub SortSingleColumnWithoutHeader() Rango("B5", Rango("B5").End(xlDown)).Sort Clave1:=Rango("B5"), Orden1:=xlAscendente, Cabecera:=xlNo End Sub
Observe que en lugar de definir el rango manualmente mediante Rango("B5:B15") hemos escrito, Rango( "B5", Range("B5"). End(xlDown)) .
Esto ordenará la columna basándose en la última celda rellenada consecutivamente en ella. Si hay celdas en blanco, los datos sólo se considerarán hasta la primera celda en blanco.
Read More: VBA para ordenar tabla en Excel (4 métodos)
2. Insertar macro VBA para ordenar una sola columna con encabezado
En la sección anterior, teníamos un conjunto de datos de una sola columna sin encabezado, pero ahora tenemos a columna con cabecera .
Esta vez aprenderemos a ordenarlo con Macro VBA .
Pasos:
- De la misma manera que antes, abra Editor de Visual Basic del Desarrollador y Inserte a Módulo en la ventana de código.
- En la ventana de código, copia el siguiente código y pégalo.
Sub SortSingleColumnWithHeader() Rango("B5:B16").Sort Clave1:=Rango("B5"), Orden1:=xlDescendente, Cabecera:=xlSí End Sub
Su código ya está listo para ejecutarse.
Toma,
- Clave1:=Rango("B5") → Especificado B5 para que el código sepa qué columna ordenar.
- Orden1:=xlDescendente → Esta vez ordenaremos la columna en orden descendente por lo que especificamos el orden como xlDescendente .
- Cabecera:= xlSí → Como esta vez nuestra columna tiene una cabecera así que la especificamos con el botón xlSí opción.
- Ejecutar este código y obtendrá el columna con cabecera ordenada en orden descendente .
Más información: Cómo ordenar ListBox con VBA en Excel (Una guía completa)
Lecturas similares:
- Cómo ordenar la dirección IP en Excel (6 métodos)
- [Ordenar en Excel no funciona (2 soluciones)
- Cómo añadir un botón de ordenación en Excel (7 métodos)
- Ordenar Rango Usando VBA en Excel (6 Ejemplos)
- Cómo Ordenar por Nombre en Excel (3 Ejemplos)
3. Macro VBA para Ordenar Múltiples Columnas con o sin Encabezado
También puede ordene varias columnas de su conjunto de datos con código VBA.
Pasos:
- Como se ha demostrado anteriormente, las Editor de Visual Basic del Desarrollador y Inserte a Módulo en la ventana de código.
- En la ventana de código, copia el siguiente código y pégalo.
Sub SortMultipleColumnsWithHeaders() With ActiveSheet.Sort .SortFields.Add Key:=Range("B4"), Order:=xlAscending .SortFields.Add Key:=Range("C4"), Order:=xlAscending .SetRange Range("B4:D15") .Header = xlYes .Apply End With End Sub
Su código ya está listo para ejecutarse.
Toma,
.SortFields.Add Clave:=Rango("B4"), Orden:=xlAscendente
.SortFields.Add Clave:=Rango("C4"), Orden:=xlAscendente
Mediante estas dos líneas, estamos definiendo Celda B4 y C4 para ordenar los dos columnas asociadas en orden ascendente .
Como tenemos cabeceras en nuestro conjunto de datos, especificamos Cabecera = xlSí de lo contrario habríamos escrito Cabecera = xlNo dentro del código.
- Ejecutar este código y obtendrá el columnas con cabecera ordenadas de forma ascendente .
4. Macro para ordenar datos haciendo doble clic en el encabezado en Excel
Si desea ordenar los datos con facilidad sólo por doble clic en la cabecera puede hacerlo con VBA código.
Pasos:
- Haga clic con el botón derecho del ratón en en el ficha de hoja .
- En la lista de opciones que aparece, haga clic en Ver Código .
- Aparecerá la ventana de código, copia el siguiente código y pégalo ahí.
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) Dim iRange As Range Dim iCount As Integer iCount = Range("B4:D15").Columns.Count Cancel = False If Target.Row = 4 And Target.Column <= iCount Then Cancel = True Set iRange = Range(Target.Address) Range("B4:D15").Sort Key1:=iRange, Header:=xlYes End If End Sub
- Guardar el código.
- Ahora vuelve a la hoja de trabajo que te interesa y si doble clic en las cabeceras verá que las columnas se reorganizan.
Read More: Cómo ordenar y filtrar datos en Excel (Una guía completa)
Cosas para recordar
- Puede crear un rango con nombre y utilizarlo en su lugar cuando pase un rango de referencias de celdas dentro de la función Ordenar Por ejemplo, si desea ordenar el rango A1:A10 en lugar de pasarlo cada vez dentro del código, puedes crear un rango con nombre, como " SortRange " y utilícelo con el Rango.Ordenar método como Rango("SortRange") .
- Si no está seguro de si su conjunto de datos tiene cabeceras o no, puede dejar que el sistema lo determine utilizando la función xlAdivina parámetro.
Conclusión
Este artículo muestra cómo ordenar la columna en Excel VBA Espero que este artículo le haya sido muy útil. No dude en preguntar si tiene alguna duda sobre el tema.