27 de enero de 2015
Ordene alfabéticamente las hojas de un libro de Excel
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
Ahora en forma descendente
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
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
jNext
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:
Suscribirse a:
Comentarios de la entrada (Atom)
Un tip muy útil, muchas gracias por hacerlo visible!!!
ResponderBorrarMuchas gracias :D
ResponderBorrarExcelente blog <3
Es un gusto poder ayudarle en mejorar sus conocimientos en Excel.
BorrarLa primera tiene un bug. Se debe cambiar una j por i
ResponderBorrarGracias, la sentencia correcta para Ascendente es
BorrarSub 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
Amigo en mac como puedo hacer tengo excel 2011?
ResponderBorrarMUy facil de aplicar ya habia visto varios y no habia podido gracias
ResponderBorrarrealmente util. muchas gracias :)
ResponderBorrarhola 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