MACRO PARA ORDENAR HOJAS DE EXCEL ALFABÉTICAMENTE

0
2016

Excel no es sólo una herramienta para llevar los datos y la contabilidad de las empresas. Su potencia reside en que sirve para clasificar y administrar casi cualquier cosa de manera sencilla y rápida. Podemos crear agendas, cuadrantes de trabajo, libretas de direcciones, plantillas de factura, registros de asistencia. Sin embargo, Excel no permite organizar las hojas de los libros de trabajo, algo muy útil cuando trabajamos con libros extensos.

Las hojas de un libro de Excel nos permiten gestionar adecuadamente nuestros datos, pero si llegamos a tener una cantidad considerable de hojas se dificultará el encontrar algunas de ellas. La solución sería ordenar las hojas de Excel alfabéticamente de manera que se nos facilite su búsqueda con una macro en código Visual Basic.

Para este ejemplo utilizaré un libro de Excel que contiene 183 hojas que han sido insertadas de manera aleatoria, cada una con el nombre de un país, pero con tantas hojas en el libro se ha convertido en un dolor de cabeza el encontrar la hoja correspondiente a cualquier país, así que he tomado la decisión de ordenarlas alfabéticamente.

Por supuesto que tendríamos la opción de ordenar hoja por hoja de manera manual, pero eso nos llevaría un tiempo considerable por lo que en esta ocasión crearemos una macro para ordenar hojas en Excel y automatizar por completo este proceso.

MACRO PARA ORDENAR HOJAS DE EXCEL ALFABÉTICAMENTE

La macro es muy sencilla ya que haremos un recorrido de todas las hojas del libro utilizando dos bucles For-Next. El primer bucle nos servirá para tomar hoja por hoja y el segundo bucle para comparar cada una de ellas con el resto de las hojas del libro. Si al hacer la comparación descubrimos que alguna hoja debe ir detrás de la otra haremos el movimiento correspondiente. Para crear esta macro abriré el Editor de Visual Basic y crearé un nuevo módulo (Insertar > Módulo) donde colocaré el siguiente código VBA:

Observa con detenimiento que este código hace la comparación de dos hojas a la vez con la siguiente línea de código:

If UCase(Sheets(a).Name) > UCase(Sheets(s).Name) Then

Nuestro código utiliza dos variables para recorrer todas las hojas. La variable «a» indica la hoja actual y la variable «s» será la hoja siguiente a la hoja actual. La función Ucase convierte en mayúsculas el nombre de ambas hojas para poder compararlas correctamente y utilizamos el operador mayor que (>) para saber si la hoja actual es mayor que la hoja siguiente.

En programación, una cadena de texto será mayor que la otra si sus letras iniciales aparecen después en el alfabeto.  Lo que evaluamos con nuestra instrucción es si el nombre de la hoja actual aparece después (en el alfabeto) que el nombre de la hoja siguiente. Si dicha condición se cumple, entonces será necesario moverlas de posición para comenzar a ordenar alfabéticamente. Eso es precisamente lo que hacemos con la siguiente línea de nuestro código:

Sheets(s).Move Before:=Sheets(a)

ORDENAR HOJAS DE EXCEL DE MANERA DESCENDENTE

Antes de probar nuestra macro, crearemos una variante que nos permitirá ordenar las hojas de Excel de manera descendente. Los cambios serán mínimos y los puedes ver en el siguiente código:

Puedes notar que existen solamente dos pequeños cambios, el primero de ellos es evidente ya que he cambiado el nombre de la subrutina para indicar que se trata de un orden descendente. El segundo cambio es el uso del operador menor que (<) en la comparación de los nombres de las hojas. Esta simple modificación nos permitirá cambiar la dirección de ordenación de las hojas para comenzar en la letra Z y terminar en la letra A.

ORDENAR HOJAS DE EXCEL CON UNA MACRO

Una vez creadas ambas subrutinas probaremos el funcionamiento de cada una de ellas. Para hacerlo puedes hacer clic en la ficha Vista > Macros para mostrar el cuadro de diálogo Macro el cual enlistará el nombre de las macros recién creadas.

Este cuadro de diálogo también lo puedes abrir desde la ficha Programador > Código > Macros. Una vez abierto el cuadro de diálogo deberás elegir la macro deseada y pulsar el botón Ejecutar. Si elegimos la subrutina OrdenarHojas_Ascendente, el resultado será el siguiente:

Si por el contrario, elegimos la macro llamada OrdenarHojas_Descendente, las hojas del libro se comenzarán a ordenar a partir de la letra Z y en orden descendente tal como lo puedes observar en la siguiente imagen:

De esta manera podemos ordenar hojas de Excel ya sea de manera ascendente o descendente con tan solo ejecutar una macro y así podremos encontrar rápidamente la hoja que necesitemos. Notamos que las únicas dos diferencias entre ambas instrucciones son el nombre de referencia en la primer línea de código y el signo «mayor que» y «menor que» en la cuarta línea del código.

Esta macro es muy útil si disponemos de muchas hojas y necesitamos ordenarlas de forma rápida y práctica, que de otra forma demoraría mucho tiempo en realizar.

Artículo que te recomendamos leer:
FUNCIÓN CONTAR.SI CUANDO EXISTEN MAYÚSCULAS

¿Qué te pareció nuestra blog? Coméntanos.

Comentarios

PROGRAMA DE ESPECIALIZACIÓN EN ASISTENTE CONTABLE.

Fecha: Sábado, 27/04 de Abril, 04/05, 11/05, 18/05, 25/05 de Mayo, 01/06, 07/06, y 15 de Junio del 2024.

Horario: 9:00 a.m. - 1:00 p.m.

Frecuencia: Cada Sábado

Duración: 8 sesiones, 8 módulos, 2 meses.



0 0 votes
Article Rating
Suscribe
Notify of
guest

0 Comentarios
Inline Feedbacks
View all comments