27 de enero de 2015

Ordene alfabéticamente las hojas de un libro de Excel

Hoja de Cálculo
Tener gran cantidad de hojas en nuestros libros de Excel se ha vuelto una necesidad en nuestras labores , ya sea que manejemos una lista de vendedores, proveedores , alumnos , productos ,  etc y que en realidad sea necesario tenerlas.

Ahora es posible por medio de una sencilla macro organizar nuestras hojas en orden alfabético ya sea ascendente o descendente.


Para nuestro ejemplo, tenemos un  libro de Ventas por Vendedor que es necesario actualizar constantemente, porque se han retirado personas e ingresado nuevas , cada hoja tiene como nombre el vendedor con su respectivo detalle.



 Organizarlo manualmente es una posible solución , pero sería muy laborioso buscar un vendedor hoja por hoja, que tal alfabéticamente ?


Ahora, haremos nuestra macro 


      1. Debemos abrir el editor de Visual Basic , existen varios métodos para abrirlo:


* A través del botón Visual Basic de la ficha Programador
* A través del atajo de teclado: ALT + F11


      2. Crearemos un nuevo módulo (Insertar / Módulo)


     

         3.  Ahora, colocaremos nuestro código:
          
         Forma ascendente




Sub Ordenar_HojasAscendente()
For i = 1 To Sheets.Count
    For j = i + 1 To Sheets.Count
        If UCase(Sheets(i).Name) > UCase(Sheets(j).Name) Then
            Sheets(j).Move Before:=Sheets(i)
        End If
    Next j
Next i
End Sub

Nuestro código utiliza dos variables para recorrer todas las hojas. La variable “i” indica la hoja actual y la variable “J” 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.


      Ahora en forma descendente


Sub Ordenar_HojasDescendente()
For i = 1 To Sheets.Count
    For j = i + 1 To Sheets.Count
        If UCase(Sheets(i).Name) < UCase(Sheets(j).Name) Then
            Sheets(j).Move Before:=Sheets(i)
        End If
    Next j
Next i
End Sub



Lo único que falta es probarlas

Luego de tener nuestras macros ya creadas , las podemos visualizar por medio de la pestaña Vista / Macros / Ver macros


Así quedarían nuestras hojas 

Ascendente:


Descendente:



Si te gustó, síguenos en Twitter  para recibir nuestras actualizaciones y trucos

9 comentarios:

  1. Un tip muy útil, muchas gracias por hacerlo visible!!!

    ResponderBorrar
  2. Respuestas
    1. Es un gusto poder ayudarle en mejorar sus conocimientos en Excel.

      Borrar
  3. La primera tiene un bug. Se debe cambiar una j por i

    ResponderBorrar
    Respuestas
    1. Gracias, la sentencia correcta para Ascendente es

      Sub Ordenar_HojasAscendente()


      For i = 1 To Sheets.Count

      For j = i + 1 To Sheets.Count

      If UCase(Sheets(i).Name) > UCase(Sheets(j).Name) Then

      Sheets(j).Move Before:=Sheets(i)

      End If

      Next j

      Next i


      End Sub

      Borrar
  4. Amigo en mac como puedo hacer tengo excel 2011?

    ResponderBorrar
  5. MUy facil de aplicar ya habia visto varios y no habia podido gracias

    ResponderBorrar
  6. realmente util. muchas gracias :)

    ResponderBorrar
  7. hola amigo quiero necesito de su ayuda , quiero hacer un registro de notas , trimestre1, trimestre2 ,trimestre3, y en cada una de las hojas cuando ingrese un alumno nuevo este se ordene automaticamente en cada una de las hojas correspondiente a cada trimestre , muchas gracias

    ResponderBorrar