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.
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:
Sub OrdenarHojas_Ascendente() For a = 1 To Sheets.Count For s = a + 1 To Sheets.Count If UCase(Sheets(a).Name) > UCase(Sheets(s).Name) Then Sheets(s).Move Before:=Sheets(a) End If Next s Next a End Sub
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:
Sub OrdenarHojas_Descendente() For a = 1 To Sheets.Count For s = a + 1 To Sheets.Count If UCase(Sheets(a).Name) < UCase(Sheets(s).Name) Then Sheets(s).Move Before:=Sheets(a) End If Next s Next a End Sub
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. Puedes descargar el libro de trabajo para probar el ordenamiento de hojas por ti mismo y además copiar la macro desarrollada en este artículo.
Artículos relacionados
Cómo crear un índice de hojas en Excel