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. Pero podemos ordenar las pestañas de Excel automáticamente con una macro en código Visual Basic. Te explicamos cómo hacerlo paso a paso.
Las palabras “macro en código Visual Basic” pueden resultar intimidatorias, pero todo es más fácil de lo que parece. Una macro es un pequeño programa que ejecuta por nosotros una serie de acciones en Excel, y sirve para automatizar las tareas repetitivas. Las macros están escritas en código Visual Basic for Applications (o VBA), un lenguaje de programación que permite acceder y ampliar las funciones de Excel.
El editor de Visual Basic
Para crear nuestra macro, hemos de abrir en Excel un libro de trabajo cualquiera, y cuantas más pestañas tenga, mejor.
Para abrir el editor de VBA, utilizamos el atajo de teclado Alt + F11. Una vez aparezca la ventana del editor, buscamos un libro de Excel en particular, llamado Personal.xls. Este libro tiene la propiedad de que cualquier cosa que hagamos en él, afectará a todos los libros de trabajo. Es decir, si creamos una macro, podremos usarla siempre que queramos.
Si no encuentras el libro Personal, no te preocupes. Sal del editor, abre la pestaña Vista de Excel, despliega el menú de Macros, y selecciona Grabar Macro. Guarda la macro en el Libro de macros personal y comienza a grabar. A continuación, vuelve a desplegar el menú de Macros y detén la grabación. Ya tienes tu libro “especial”.
Ahora lo tenemos todo listo para crear un módulo nuevo. Abrimos el editor de VBA con Alt + F11, seleccionamos el libro Personal.xls, y luego pulsamos Insertar > Módulo. Colocamos el cursor en la ventana del módulo y escribimos el siguiente código:
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
Cerramos la ventana, y la macro se habrá almacenado automáticamente. Sólo queda comprobar que funciona. Abrimos el libro cuyas pestañas queremos ordenar, vamos a Vista y hacemos click sobre Macros, o bien pulsamos el atajo de teclado Alt + F8. Hacemos doble click sobre OrdenarHojas_Ascendente, y las pestañas del libro se colocarán por orden alfabético en un instante.
Al cerrar Excel, el programa nos pedirá si queremos guardar los cambios hechos en las macros. Aceptamos, y nuestra macro quedará almacenada para usarla con el libro que deseemos.
Ordenar las hojas de manera descendente
Con unos pequeños cambios en el código, podemos conseguir el efecto inverso: ordenar las pestañas en orden alfabético descendente. Repetimos el proceso para la creación de la macro, y en esta ocasión insertamos el código siguiente:
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
Sólo hay dos variaciones. La primera, como es obvio, es el nombre de la macro. La segunda es el cambio de > a < en la cuarta línea de código. Esto significa que la ordenación de las hojas del libro cambiará de dirección. Ahora, cuando hagas clic en Vista > Macros (o bien el atajo Alt + F8), verás las dos macros recién creadas. Haz doble click en OrdenarHojas_Descendente, y comprueba con satisfacción su efecto.
Guardando los cambios al salir de Excel, tendremos estas dos macros disponibles en cualquier momento. Nos ahorrarán mucho tiempo y esfuerzo al manejar pestañas de libros de Excel que sean especialmente voluminosos.
Muy util para cuando creas miles de paginas y luego es un rollo ordenarlas porque tu pantalla no es tan grande como la barra de desplazamiento!
Por cierto, ¿ese excel creado era para comparar quien mata mas veces?
Hola, Cristina. No, no creamos este Excel para comparar quien mata más, sino a quién hemos tenido más ganas de matar. Incluso los personajes que nos gustan han tenido momentos en que merecían un guantazo con la mano bien abierta.
¡Gracias por tu comentario!
Muchas gracias, muy útil… yo querría ordenar las pestañas que me genera un aplicativo al orden inverso al actual.. no se me ocurre en referencia a qué podría ordenar, dado que alfabéticamente no me sirve, y los nombres de las pestañas no son necesariamente siempre los mismos. ¿Tendrías una idea al respecto?
Hola, Eduard. Si te es posible modificar los nombres de las pestañas antes de que las genere el aplicativo, te sugerimos que añadas números en orden ascendente delante del nombre de cada pestaña. Cuando el aplicativo produzca el libro de Excel, podrás utilizar la macro para cambiar el orden de las pestañas. Si no puedes cambiar el nombre previamente, siempre puedes añadir un número a cada pestaña con el Excel ya generado, y luego usar la macro. También puedes ordenar manualmente, pero es fácil equivocarse al arrastrar pestañas de acá para allá. Es laborioso, pero no se nos ocurre nada mejor.
Si algún lector conoce una solución más sencilla, por favor, que no dude en comentarla.
Gracias a ti, Eduard, por tu comentario. ¡Un saludo!
Saludos, y gracias me sirvio mucho; pero quisiera saber como hacer para cuando actualizo el libro me situe siempre en una hoja especifica, es decir, tengo una hoja principal denominada Reserva, quiero que cada vez que actualice me situe siempre allí. Gracias
Buenos días,
Muy bueno tu artículo sobre Macros. En mi caso, mis hojas no tienen numeración alfabética, si no numérica. El problema que se me genera al unir hojas con macros es que estas se ordenan de forma que primero vienen los uno (el uno solo, el uno con el cero, el uno con el uno = 1,10,11..) y después los dos (2,20,21…) de forma que mi serie termina siendo: 1,10,11… 2,20,21,… 3,30,31…
No encuentro forma de ordenar difectamente como 1,2,3,… La única solución que encuentro es alterar todos los nombres de los ficheros a numeración alfabética, lo cual termina siendo muy lioso, o instalar un programa que recomiendan en una página para ordenar, pero que resulta también un follón. Me gustaría solucionar el problema directamente con una Macro. ¿Se os ocurre alguna solución?
Muchísimas gracias.
Hola Lola, me comentan que la solución más sencilla es empezar a nombrar las hojas con tantos ceros delante como hojas tengas. Por ejemplo, si tienes 5400 hojas empieza con 0001, 0002, etc. También me han pasado una macro que quizás podría funcionar, si la quieres ¿me puedes dejar un correo al que enviarla? Muchas gracias y un saludo!!
Víctor te agradecería si es que me mandas la macro que te han pasado para el orden numérico ya que me seria de gran ayuda para mi trabajo.
Te agradezco por adelantado,
Saludos
Hola Victor, gracias por las soluciones que das para facilitarnos el trabajo. Por favor me podria enviar la macro que me permite ordenar las hojas de un libro numericamente.
Saludos,
Graciaaaaaaaaaas!!!!!
Un placer André!
Gracias por el aporte, eres un genio
Buenos días
No se si me podrías pasar ese macro que comentas para ordenar las hojas numéricamente
Muchas gracias por todo lo que nos compartes
Mil graciaaaas! Fue de mucha ayuda!
Muchas gracias, es muy util el conocimiento que has compartido. Me ayudo en ordenar las memorias de cantidades para un presupuesto de obra que tiene las memorias de las cantidades que respaldan el presupuesto y son mas de 100 hojas.
Saludos.
Excelente, funcionó de maravilla.
MIl gracias por vuestra ayuda.
Muy util, muchas gracias, tienen FB?
Excelente muchas gracias, el orden se hizo de manera numérica gracias #1
Muchas gracias por la macro. Tenia un montón de pestañas y se han ordenado de maravilla.
Fantastico, muchas gracias
Excelente, mil gracias por la ayuda
SIMPLE Y ELEGANTE, ME TOMABA HORAS ORGANIZAR 500 HOJAS, MUCHAS GRACIAS
hoy la utilice y me funciono a la perfeccion facil, simple, y efectiva