VBA para ordenar columnas en Excel (4 métodos)

  • Compartir Este
Hugh West

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.
  • xlAscending = Para ordenar en orden ascendente.
  • xlDescendente = Para ordenar en orden descendente.
Cabecera Opcional XlYesNoGuess Especifica si la primera fila contiene cabeceras o no.
  • xlNo = Cuando la columna no tiene cabeceras; Valor por defecto.
  • xlSí = Cuando las columnas tienen cabeceras.
  • xlAdivina = Para que Excel determine las cabeceras.

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.

Hugh West es un capacitador y analista de Excel altamente experimentado con más de 10 años de experiencia en la industria. Tiene una Licenciatura en Contabilidad y Finanzas y una Maestría en Administración de Empresas. Hugh tiene una pasión por la enseñanza y ha desarrollado un enfoque de enseñanza único que es fácil de seguir y comprender. Su conocimiento experto de Excel ha ayudado a miles de estudiantes y profesionales en todo el mundo a mejorar sus habilidades y sobresalir en sus carreras. A través de su blog, Hugh comparte su conocimiento con el mundo, ofreciendo tutoriales gratuitos de Excel y capacitación en línea para ayudar a las personas y empresas a alcanzar su máximo potencial.