当使用大型工作表时,通常不添加小计,以便您可以按某种逻辑方式将工作表中的信息分组。 (“小计”工具位于“大纲”组中功能区的“数据”选项卡上。)添加小计时,可以指定Excel在全新页面上启动每个组。这对于Excel中的所有类型的报告都非常方便。

如果您在新页面上开始每个组或小计部分,您可能想知道是否存在一种方法来创建自定义标题,每个标题的打印方式都与Word文档中不同部分相似。不幸的是,无法在Excel中执行此操作。但是,您可以创建一个宏来迭代更改标题并打印工作表的每一组。请考虑以下宏:

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

这个宏是完成您想要做的事情的良好起点。首先询问您要为每个部分打印多少份,然后开始遍历每一行以查看在该行之前是否有分页符。

通过查看每行的PageBreak属性来完成实际的行检查。此属性通常设置为xlPageBreakNone,但是当您使用Excel的“分类汇总”功能时,任何在此属性之前设置为xlPageBreakManual的分页符的行。如果您在工作表中手动放置分页符,则该设置将与该设置相同。

如果宏检测到行之前有分页符,则将rngSection范围设置为等于上一组中的行。此外,“选择案例”结构用于设置用于工作表不同部分的不同标题。然后将此标题放在标题的中心位置,并打印由rngSection指定的范围。

在逐步浏览工作表中的所有组之后,将打印最后一个组(不以分页符结尾)。

为了使用此宏,您需要做的就是在“选择案例”结构中指定工作表各部分所需的不同标题。如果需要,还可以更改标题在标题中的放置位置。您需要做的就是将CenterHeader属性更改为LeftHeader或RightHeader。如果需要,还可以使用LeftFooter,CenterFooter和RightFooter。

注意:

如果您想知道如何使用此页面(或_ExcelTips_网站上的任何其他页面)中描述的宏,我准备了一个特殊页面,其中包含有用的信息。

_ExcelTips_是您进行经济高效的Microsoft Excel培训的来源。

本技巧(9867)适用于Microsoft Excel 2007、2010、2013、2016、2019和Office 365中的Excel。