Táboa de contidos
Saber como ordenar o intervalo usando VBA en Excel é un aforro de tempo e esforzo nos nosos cálculos diarios. Aínda que Excel ofrece unha función de clasificación por defecto. Ao usar o método Range.Sort , accedemos a varios parámetros para ordenar un conxunto de datos con máis opcións do habitual.
Descargar libro de prácticas
Descarga este caderno de prácticas para facer exercicio mentres lees este artigo.
Ordenar intervalo en Excel.xlsm
Introdución ao rango. Instrucción de ordenación en Excel VBA
Obxectivo : Para ordenar un rango de datos de cela.
Sintaxe:
expresión .Ordenar ( Tecla1 , Orden1 , Tecla2 , Tipo , Orden2 , Clave3 , Orden3 , Encabezado , Pedido personalizado , MatchCase , Orientación , SortMethod , DataOption1 , DataOption2 , DataOption3 )
Aquí, a expresión representa un obxecto Intervalo , é dicir, unha cela, unha fila, unha columna ou unha selección de celas.
Argumentos:
Necesitamos proporcionar tres parámetros principais para o método Range.Sort . Son:
Clave – O rango de celas dunha ou varias columnas que necesitamos ordenar.
Orden – Especifique a orde de ordenación. ascendente ou descendente.
Encabezado – Declara se as columnas que se van ordenar teñen ou non cabeceira.
6 Exemplos para ordenar intervalos en Excel VBA
Eneste artigo, como conxunto de datos, utilizaremos unha lista de nomes de persoas coa súa data de nacemento e idade. Aplicaremos diferentes métodos para ordenar o conxunto de datos. Imos repasar o artigo e practicar para dominar estes métodos.
1. Ordenar o intervalo dunha única columna usando Excel VBA
Neste exemplo, ordenaremos as persoas de máis vellas ás máis novas . Sigamos os pasos para usar o Intervalo . Método de ordenación que ordenará a columna Idade en orde descendente .
Pasos:
- Vaia á pestana Programador na cinta de Excel para faga clic en en Visual Basic
- A continuación, escolla a opción Módulo desde a pestana Inserir para abrir un novo módulo .
Agora, poñeremos o noso código en ordena o intervalo de columnas Idade .
1.1 Columna con cabeceira
Inserta o seguinte código no editor de código visual.
9247
Preme F5 ou fai clic no botón Executar para executar o código.
Explicación:
No código anterior, poñemos-
Expresión (obxecto Rango)=Range(“D4:D11”); a columna de idade cun encabezado na cela D4 e valores en D5:D11.
Tecla = Rango(“D4”); a tecla para ordenar.
Order= xlDescendente; como queremos ordenar valores de máis grandes a máis baixos establecemos a orde de clasificación como descendente.
Encabezado =xlYes; Na seguinte captura de pantalla, podemos ver que o conxunto de datos ten un cabeceira para cada unha das columnas.
1.2 Columna sen cabeceira
Pon o seguinte código no editor de código visual.
7926
Preme F5 ou fai clic no botón Executar para executar o código.
Explicación:
No código anterior, poñemos-
Expresión (obxecto Rango)=Range(“D4 :D10”); a columna de idade sen encabezado ten valores en D4:D10.
Clave = Rango ("D4"); a tecla para ordenar.
Order= xlDescendente; como queremos ordenar valores de máis grandes a máis baixos establecemos a orde de clasificación como descendente.
Encabezado =xlNon; Na seguinte captura de pantalla, podemos ver que o conxunto de datos non ten cabeceira.
Contido relacionado: Como ordenar columnas en Excel sen mesturar datos (3 xeitos)
2. Usar código VBA para ordenar intervalos de varias columnas en Excel
Para mostrar a ordenación en varias columnas , necesitamos modificar o noso conxunto de datos un pouco. Inserimos algunhas novas filas . No conxunto de datos modificado, as filas 7, 8, e 9 teñen os mesmos valores para a data de nacemento e idades pero tres nomes diferentes . Estes nomes non están nun orde específico de ascendente ou descendente.
Neste exemplo, ordenaremos os nomes en orde ascendente . Imos executar o seguinte código no editor de Visual Basic:
4326
Explicación:
No anterior captura de pantalla, podemos ver que as idades na columna D están ordenadas en orde descendente. Engadimos dous parámetros máis no noso código anterior.
Key2: =Range(“B4”) , a clave para ordenar os nomes.
Orde2: =xlAscending , a orde para nomes curtos .
Como resultado, vemos os nomes en as filas 7, 8 e 9 agora están alfabeticamente ordenadas en orde ascendente.
Na seguinte captura de pantalla, cambiamos o valor do parámetro Order2 para ordenar os nomes en orde descendente .
Ler máis: Como ordenar varias columnas en Excel (5 enfoques rápidos)
3. Fai dobre clic na cabeceira para ordenar o intervalo de columnas en Excel VBA
A función de ordenación predeterminada de Excel non permite ordenar os valores dunha columna por faga dobre clic na cabeceira da columna . Pero usando código VBA podemos facelo posible. Ilustremos esta funcionalidade aplicando o seguinte código.
7137
Neste código, usamos o evento BeforeDoubleClick para desactivar o dobre clic – habitual que consiste en iniciar o modo edición da cela. Con este eventoen execución, se famos dúas veces – clic en calquera das cabeceiras da columna , ordenará os datos da columna en orden ascendente .
Ler máis: VBA para ordenar columnas en Excel (4 métodos)
Lecturas similares:
- Como engadir un botón de clasificación en Excel (7 métodos)
- Ordenar unha lista única en Excel (10 métodos útiles)
- Como para usar a función de clasificación en Excel VBA (8 exemplos axeitados)
- Ordenar duplicados en Excel (columnas e filas)
- Ordenación aleatoria en Excel ( Fórmulas + VBA)
4. Ordenar o intervalo de columnas en función da cor de fondo usando Excel VBA
Podemos ordenar un intervalo de celas nunha columna en función da segundo a súa cor de fondo . Para facelo, necesitamos engadir un parámetro chamado SortOn que teña un valor xlSortOnCellColor . Para demostrar a ordenación, primeiro establecemos cores de fondo diferentes nas filas do noso conxunto de datos .
A continuación, no Visual Basic editor de código copie o seguinte código e prema F5 para executalo.
9667
Na seguinte captura de pantalla, podemos ver o conxunto de datos ordenado baseado na súa cor de fondo.
Explicación:
- Neste exemplo, chamamos a folla de traballo “ fondo ”. Entón, no código, poñemos " fondo " como o noso nome da folla de traballo activa.
- Establecemos B4 como a tecla e B4:D10 como intervalo . O código ordenará os datos en función da clave.
- Como non especificamos o parámetro de cabeceira , o código execútase para o predeterminado sen cabeceira.
- Establecemos o parámetro orde como ascendente, de xeito que clasificou os datos de menor a maior .
Ler máis: Como ordenar por cor en Excel (4 criterios)
5. Aplicar código VBA para ordenar o intervalo de columnas en función da cor da fonte
Ao aplicar código VBA, podemos ordenar o noso conxunto de datos en función da súa cor de letra . En primeiro lugar, necesitamos colorear diferentes filas para ilustrar o exemplo.
Aplica o seguinte código para ordenar o conxunto de datos en función da cor da letra.
8311
Explicación:
- Neste exemplo, chamamos a folla de traballo " fontcolor ". Entón, no código, poñemos " fontcolor " como o noso nome da folla de traballo activa.
- Establecemos B4 como a tecla e B4:D11 como o intervalo . O código ordenará os datos en función da clave.
- Neste exemplo, tamén especificamos o parámetro de cabeceira como xlYes .
- Aquí establecemos a orde o parámetro como ascendente, de xeito que clasificou os datos de menor a maior .
- O valor do parámetro SortOn é
- O parámetro de orientación contén o valor xlTopToBottom como é obrigatorio.
- A cor para ordenar é en termos RGB que ten un valorde 0 a 255 .
Ler máis: Como ordenar dúas columnas en Excel para que coincidan (ambas as dúas exactas) e Partido Parcial)
6. Cambiar a orientación ao intervalo de ordenación mediante Excel VBA
Utilizando o parámetro orientación , podemos cambiar a forma en que queremos ordenar os datos. Neste exemplo, temos transposto o noso conxunto de datos para ordenar o horizontalmente .
Poñemos o seguinte código no editor de Visual Basic e prema F5 para executalo.
1589
Aquí ordenamos os datos en función da fila de idade en orde ascendente de esquerda a dereita . No código, establecemos o parámetro orientación como xlSortRows .
Contido relacionado: Como ordenar automaticamente varias columnas en Excel (3 xeitos)
Cousas para recordar
- O parámetro SortOn que usamos para ordenar O intervalo de columnas baseado na cor de fondo e a cor da letra só pode ser usado por un obxecto de folla de traballo . Non podemos usalo cun obxecto de rango .
- O evento BeforeDoubleClick ordena os datos só en ascendente.
Conclusión
Agora sabemos como ordenar o intervalo usando VBA en Excel. Con sorte, animaríache a usar isto con máis confianza. Calquera dúbida ou suxestión non esquezas poñelas na caixa de comentarios a continuación.