«Numerar las hojas» de Excel puede significar dos cosas: poner un número consecutivo en el nombre de cada pestaña del libro, o foliar, es decir, numerar las páginas que se imprimen. Lo primero se hace con una macro y lo segundo, con el encabezado o el pie de página. ¿Cómo se hace cada una?
Foliar: numerar las páginas al imprimir.
Para que cada página impresa o exportada a PDF lleve su número, se agrega un campo de número de página en el pie o en el encabezado:
- Ir a «Insertar», «Encabezado y pie de página». La hoja cambia a la vista «Diseño de página».
- Hacer clic en la sección del pie de página donde irá el número: izquierda, centro o derecha.
- En la pestaña «Encabezado y pie de página», hacer clic en «Número de página». Aparece el código &[Página].
- Si se quiere el formato «Página 1 de 5», escribir «Página », insertar «Número de página», escribir « de » e insertar «Número de páginas».
- Hacer clic en cualquier celda y revisar el resultado en la vista previa de impresión (Ctrl + P).
También puede hacerse desde «Disposición de página», el iniciador del grupo «Configurar página», pestaña «Encabezado y pie de página», donde hay formatos predefinidos como «Página 1 de ?».
Empezar en otro número.
Para que la numeración empiece en un número distinto de 1, por ejemplo porque el documento continúa la foliación de otro, se abre «Configurar página» y, en la pestaña «Página», se escribe el número en «Primer número de página». Con «Automático», Excel empieza en 1.
Foliar varias hojas a la vez.
El encabezado y el pie de página se configuran por hoja. Para aplicarlos a varias, se agrupan antes: clic en la primera pestaña, Mayús + clic en la última (o Ctrl + clic en hojas sueltas) y se configura el pie de página una sola vez. Al terminar, se desagrupan con clic derecho, «Desagrupar hojas», para no modificar todas las hojas al escribir.
Si se imprime el libro completo con la opción «Imprimir todo el libro» y el primer número de página está en «Automático», la numeración continúa de una hoja a la siguiente. Cuando las hojas se imprimen por separado, cada una empieza en 1, salvo que se ajuste el primer número de página de cada una; la macro FoliarContinuo del módulo descargable lo hace automáticamente.
Numerar las pestañas con una macro.
Para poner un número consecutivo en el nombre de cada hoja se usa una macro, que se escribe en el editor de Visual Basic (Alt + F11), en «Insertar», «Módulo». Esta antepone el número al nombre actual, de modo que «Enero» queda como «01-Enero»:
Sub AnteponerNumero()
Dim h As Worksheet, i As Long
For Each h In ThisWorkbook.Worksheets
i = i + 1
h.Name = Left(Format(i, "00") & "-" & h.Name, 31)
Next h
End Sub
For Each recorre las hojas en el orden de las pestañas, i lleva la cuenta y Format(i, "00") escribe el número con dos dígitos, para que 01, 02… 10 se ordenen bien. Left limita el nombre a 31 caracteres, el máximo que admite Excel. Si se cambia el separador «-» por un espacio u otro carácter, la macro funciona igual, salvo con los caracteres que Excel no admite en los nombres de hoja: \ / ? * [ ] :.
Reemplazar el nombre por el número.
Si se quiere que cada hoja se llame solo con su número, hay que tener en cuenta que Excel no permite dos hojas con el mismo nombre. Si alguna ya se llama «2», la macro se detiene al intentar cambiar otra a «2». Por eso, primero se asignan nombres temporales y después los definitivos:
Sub NumerarHojas()
Dim h As Worksheet, i As Long
For Each h In ThisWorkbook.Worksheets
i = i + 1: h.Name = "tmp_" & i
Next h
i = 0
For Each h In ThisWorkbook.Worksheets
i = i + 1: h.Name = Format(i, "00")
Next h
End Sub
Cambiar el nombre de las hojas no afecta las fórmulas, que se actualizan solas, pero sí las macros que se refieren a una hoja por su nombre, como Worksheets("Enero"). Conviene probar la macro en una copia del libro. Más códigos para trabajar con hojas están en el artículo sobre los códigos de macros más comunes.
Saber el número de una hoja con una fórmula.
Desde Excel 2013, la función HOJA devuelve la posición de la hoja en el libro: =HOJA() en una celda muestra el número de la hoja en que está, y =HOJAS() el total de hojas del libro. Con =HOJA()&" de "&HOJAS() se obtiene, por ejemplo, «3 de 12», sin cambiar el nombre de las pestañas.
Las hojas ocultas también cuentan en la posición. Cómo mostrarlas se explica en el artículo sobre cómo mostrar hojas ocultas en Excel.
Macros de ejemplo para numerar y foliar hojas.
A continuación se dejan 5 macros que permiten automatizar el proceso explicad:
' 1. Reemplazar el nombre de cada hoja por un número consecutivo (01, 02, 03...)
Sub NumerarHojas()
Dim h As Worksheet, i As Long
' Primero se asignan nombres temporales para evitar conflictos con nombres que ya existan
For Each h In ThisWorkbook.Worksheets
i = i + 1
h.Name = "tmp_" & i
Next h
i = 0
For Each h In ThisWorkbook.Worksheets
i = i + 1
h.Name = Format(i, "00")
Next h
End Sub
' 2. Anteponer un número al nombre actual de cada hoja (01-Enero, 02-Febrero...)
Sub AnteponerNumero()
Dim h As Worksheet, i As Long, nuevo As String
For Each h In ThisWorkbook.Worksheets
i = i + 1
nuevo = Left(Format(i, "00") & "-" & h.Name, 31) ' máximo 31 caracteres
h.Name = nuevo
Next h
End Sub
' 3. Quitar el número antepuesto con la macro anterior (formato 00-)
Sub QuitarNumero()
Dim h As Worksheet
For Each h In ThisWorkbook.Worksheets
If h.Name Like "##-*" Then h.Name = Mid(h.Name, 4)
Next h
End Sub
' 4. Foliar: poner "Página X de Y" en el pie de página de todas las hojas
Sub FoliarTodasLasHojas()
Dim h As Worksheet
Application.PrintCommunication = False
For Each h In ThisWorkbook.Worksheets
h.PageSetup.CenterFooter = "Página &P de &N"
Next h
Application.PrintCommunication = True
MsgBox "Se agregó la numeración de páginas en el pie de página de todas las hojas.", vbInformation
End Sub
' 5. Foliar con numeración continua: cada hoja empieza donde terminó la anterior
Sub FoliarContinuo()
Dim h As Worksheet, siguiente As Long
siguiente = 1
For Each h In ThisWorkbook.Worksheets
If h.Visible = xlSheetVisible Then
h.PageSetup.FirstPageNumber = siguiente
h.PageSetup.CenterFooter = "Folio &P"
siguiente = siguiente + h.PageSetup.Pages.Count
End If
Next h
MsgBox "Folios asignados del 1 al " & siguiente - 1 & ".", vbInformation
End Sub
Preguntas frecuentes.
A continuación respondemos las preguntas frecuentes de nuestros lectores.
¿Cómo foliar hojas en Excel?
Con «Insertar», «Encabezado y pie de página», «Número de página», en el pie de cada hoja.
¿Cómo hago que la numeración empiece en otro número?
En «Configurar página», pestaña «Página», «Primer número de página».
¿Cómo numero todas las hojas del libro a la vez?
Agrupándolas con Mayús + clic en las pestañas antes de configurar el pie de página, o con una macro.
¿Cómo pongo un número en el nombre de cada hoja?
Con una macro que recorra las hojas con For Each y cambie su propiedad Name.
¿Qué fórmula devuelve el número de la hoja?
=HOJA(), disponible desde Excel 2013. =HOJAS() devuelve el total de hojas.