Lección 10: Autofiltro y ordenación automática de datos con macros.

Escrito por Administrador

16 de septiembre de 2021

En esta lección, vas a aprender a insertar un autofiltro y a filtrar de manera automática usando macros, además de ordenar los datos en base a una o varias columnas. ¡Empecemos!

Existe un estudio que asegura que en el 95% de las hojas de cálculo existe una tabla. Esto es normal porque tendemos a funcionar como funcionan las bases de datos, a base de registros.

Si tuviéramos que elegir las funcionalidades indispensables de una tabla, sin duda serían el filtrado de datos y su ordenación. No es funcional una tabla en la que no podamos buscar de forma rápida los datos que contiene y ordenarlos de manera adecuada.

1. Insertar un autofiltro en una tabla de manera automática.

Para insertar un autofiltro en nuestra tabla de manera automática mediante macros, usaremos la propiedad AutoFilter, que tiene la siguiente sintaxis:

Range("B2:B9").AutoFilter
total-operaciones-matematicas-macros

Usando este comando, introducimos el filtro en la cabecera de la tabla especificada. Si volviéramos a repetirlo, este filtro desaparecería.

total-operaciones-matematicas-macros

Con el filtro introducido, ya tenemos opción de ordenar la tabla de manera manual, pero nosotros queremos que la ordenación sea automática. ¿Cómo? Vamos a verlo.

2. Ordenar elementos de una tabla de forma automática.

Podemos ordenar los elementos de una lista en función de uno o varios campos.

Si solo usamos un campo como criterio, escribiremos:

Range("C4:G28").Sort Key1:=Range("E:E"), Order1:=xlAscending, Header:=xlYes

Vamos a destripar el comando anterior para entenderlo mejor. El primer rango (C4-G28) hace referencia al rango completo de la tabla a ordenar. En este caso hemos incluido el encabezado de la misma, por eso al final del comando le decimos que está incluido Header:=xlYes. Si en el rango hubiéramos excluido el encabezado, hubiéramos terminado el comando con Header:=xlNo.

A continuación, en el mismo comando encontramos la propiedad Key, que hace referencia al campo referencia para ordenar la tabla. Tal y como está en el ejemplo, la tabla se ordenará según la columna E.

También se indica el orden alfabético o numérico, es decir, si es ascendente o descendente con: xlAscending o xlDescending.

Si usamos, por ejemplo, dos campos como criterio, escribiremos:

Range("C4:G28").Sort Key1:=Range("C:C"), Order1:=xlAscending, Key2:=Range("E:E"), Order2:=xlAscending, Header:=xlYes

Este caso es igual que el anterior, solo que añadimos una nueva Key con sus parámetros correspondientes. De esta manera, la tabla se ordenará según las columnas C y E, prevaleciendo la columna C, que es la primera Key.

Veamos un ejemplo.

Crea un libro nuevo, abre el editor VBA, inserta 3 módulos y copia las siguientes macros.

Aquí te dejo los enlaces donde explico cómo configurar Microsoft Excel para el uso de macros, y el de cómo asignar macros a botones.

 

Macro 1. Insertar/eliminar un autofiltro del encabezado.

Sub Leccion10_1()

'Macro que inserta automáticamente un filtro en el encabezado de la tabla o lo elimina si volvemos a 'ejecutarla

Range("C4:G4").AutoFilter

End Sub

Macro 2. Ordenar una tabla en función de un campo.

Sub Leccion10_2()

'Macro que ordena alfabéticamente la tabla según el campo asignatura

Range("C4:G28").Sort Key1:=Range("E:E"), Order1:=xlAscending, Header:=xlYes

End Sub

Macro 3. Ordenar una tabla en función de varios campos.

Sub Leccion10_3()

'Macro que ordena alfabéticamente la tabla según los campos nombre, asignatura y nota, prevaleciendo en este orden

Range("C4:G28").Sort Key1:=Range("C:C"), Order1:=xlAscending, Key2:=Range("E:E"), Order2:=xlAscending, Key3:=Range("F:F"), Order3:=xlAscending, Header:=xlYes

End Sub

Ahora inserta tres botones y asociales las macros. Rellena la hoja Excel tal y como se muestra en la siguiente figura.

total-operaciones-matematicas-macros

Si ejecutas la primera de las macros, verás como aparece un autofiltro en el encabezado de la tabla y, manualmente, podrías ordenar las columnas a tu antojo.

Si vuelves a ejecutar la macro, desaparece el autofiltro.

Ejecuta ahora la segunda macro para que la tabla se ordene de manera automática y de forma ascendente según la columna “Asignatura”.

total-operaciones-matematicas-macros

Con la tercera macro, el orden de la tabla atiende a tres criterios: nombre, asignatura y nota, por este orden.

total-operaciones-matematicas-macros

Ya sabemos ordenar una tabla después de realizar con ella cualquier tipo de operación como las que ya hemos visto: inserción de filas, borrado de filas, modificación del contenido….

Con esto llegamos al final de la décima lección, en la que has aprendido a insertar un autofiltro usando macros y a ordenar automáticamente los datos de una tabla.

Espero que te esté gustando el curso. Si quieres, puedes proponerme macros que te interese desarrollar y las voy incluyendo en el temario, soy todo oídos.

Por último, quiero invitarte a compartir tus dudas en los comentarios o en el foro. Intentaré ayudarte en todo lo que pueda, y así aprenderemos todos.

Nos vemos en el próximo capítulo.

Si te ha servido y quieres donar

Descarga el archivo del ejemplo

4 Comentarios

  1. Avatar

    Hola a esta tabla existe una forma, de colocar digamos una "base de datos" y que me ordene dicha información en una categoría que yo asigne? Ejemplo si yo tengo que "pedro" pertenece a la zona "sur" al yo ingresar ese Pedro que esta en la base de datos, me lo asigne automáticamente a la categoría "sur"?

    Responder
  2. Avatar

    Hola!

    Me gusta su manera de explicar.

    Necesito ir mas alla, ordenar, filtrar y copiar el redultado del filtro a otra hoja.

    Esto hace que los rango resultante de los filtros tengan tamaños variables.

    Podria ejemplificar esto.

    Gracias por adelantado

    Responder

Enviar un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

« L9. Combinar celdas con macros.

L11. Buscar el inicio y fin de una tabla con macros. »

Categorías

marzo 2024
LMXJVSD
 123
45678910
11121314151617
18192021222324
25262728293031

Debates en el foro

Avatar
Formularios con ADO

Contacto