Cuando se trabaja con hojas de trabajo grandes, no es inusual agregar subtotales para poder agrupar la información en la hoja de trabajo de alguna manera lógica. (La herramienta Subtotal está en la pestaña Datos de la cinta en el grupo Esquema). Al agregar subtotales, puede especificar que Excel comience cada grupo en una página nueva. Esto es muy útil para todo tipo de informes en Excel.

Si comienza cada sección de grupo o subtotal en una página nueva, es posible que se pregunte si hay una manera de crear encabezados personalizados que se impriman de manera diferente para cada sección, similar a lo que puede hacer con diferentes secciones en un documento de Word. Desafortunadamente, no hay forma de hacer esto en Excel. Sin embargo, puede crear una macro que cambie iterativamente el encabezado e imprima cada grupo de una hoja de trabajo. Considere la siguiente macro:

Sub ChangeSectionHeads()

Dim c As Range, rngSection As Range     Dim cFirst As Range, cLast As Range     Dim rowLast As Long, colLast As Integer     Dim r As Long, iSection As Integer     Dim iCopies As Variant     Dim strCH As String

Set c = Range("A1").SpecialCells(xlCellTypeLastCell)

rowLast = c.Row     colLast = c.Column

iCopies = InputBox( _         "Number of Copies", "Changing Section Headers", 1)



If iCopies = "" Then Exit Sub

Set cFirst = Range("A1")     ' initialization start cell     For r = 2 To rowLast    ' from first row to last row         If ActiveSheet.Rows(r).PageBreak = xlPageBreakManual Then             Set cLast = Cells(r - 1, colLast)

Set rngSection = Range(cFirst, cLast)



iSection = iSection + 1             Select Case iSection             '   substitute your CenterSection Header data ...

Case 1: strCH = "Section 1"

Case 2: strCH = "Section 2"

'   etc             '   Case n: strCH = "Section n"

End Select

ActiveSheet.PageSetup.CenterHeader = strCH

rngSection.PrintOut _                 Copies:=iCopies, Collate:=True

Set cFirst = Cells(r, 1)

End If     Next r

'   Last Section +++++++++++++++++++++++++++



Set rngSection = Range(cFirst, c)



iSection = iSection + 1 '   substitute your Center Header data ...

strCH = "Last Section ..."



ActiveSheet.PageSetup.CenterHeader = strCH

rngSection.PrintOut _         Copies:=iCopies, Collate:=True End Sub

Esta macro es un buen comienzo para lograr lo que desea hacer. Comienza preguntándole cuántas copias desea imprimir de cada sección, y luego comienza a pasar por cada fila para ver si hay un salto de página antes de esa fila.

La comprobación de filas real se realiza observando la propiedad PageBreak de cada fila. Esta propiedad normalmente se establece en xlPageBreakNone, pero cuando usa la función Subtotales de Excel, cualquier fila que tenga un salto de página antes tiene esta propiedad establecida en xlPageBreakManual. Esta es la misma configuración que ocurriría si colocara saltos de página manualmente en su hoja de trabajo.

Si la macro detecta que una fila tiene un salto de página antes, entonces el rango de rngSection se establece igual a las filas del grupo anterior. Además, la estructura Seleccionar caso se utiliza para establecer los diferentes encabezados utilizados para las diferentes secciones de la hoja de trabajo. Este encabezado luego se coloca en la posición central del encabezado y se imprime el rango especificado por rngSection.

Después de recorrer todos los grupos en la hoja de trabajo, se imprime el grupo final (que no termina con un salto de página).

Para utilizar esta macro, todo lo que necesita hacer es especificar dentro de la estructura Seleccionar caso los diferentes encabezados que desea para cada sección de la hoja de trabajo. También puede, si lo desea, cambiar la ubicación del encabezado en el encabezado. Todo lo que necesita hacer es cambiar la propiedad CenterHeader a LeftHeader o RightHeader. También puede utilizar LeftFooter, CenterFooter y RightFooter, si lo desea.

_Nota: _

Si desea saber cómo usar las macros descritas en esta página (o en cualquier otra página de los sitios ExcelTips), he preparado una página especial que incluye información útil.

link: / excelribbon-ExcelTipsMacros [Haga clic aquí para abrir esa página especial en una nueva pestaña del navegador].

ExcelTips es su fuente de formación rentable en Microsoft Excel.

Este consejo (9867) se aplica a Microsoft Excel 2007, 2010, 2013, 2016, 2019 y Excel en Office 365.