Имя и фамилия в заголовке страницы (Microsoft Excel)
Дэвид управляет выборами в профессиональном сообществе, и список имеющих право голоса представляет собой рабочий лист. Имеется около 1200 правомочных избирателей, поэтому распечатка занимает более двадцати страниц. У Дэвида есть нижний колонтитул с номером страницы — что очень полезно, — но было бы здорово, если бы он мог иметь в заголовке каждой страницы имя на странице и фамилию на странице.
В Excel нет собственного способа сделать это. Однако в Word это относительно несложно, поэтому одним из решений является вставка отсортированных имен в документ Word, а затем добавление желаемого заголовка, отображающего имена.
Хотя это может сработать, становится сложно убедиться, что версия списка для Word всегда синхронизирована с версией списка для Excel, и наоборот.
Если вы решили, что хотите сохранить единую версию списка избирателей в Excel, лучший способ решить эту проблему — использовать макрос для вставки имени и фамилии в заголовок. Код для такого макроса, очевидно, должен быть адаптирован к структуре данных на вашем листе. В следующем макросе предполагается, что имена находятся в столбцах от A до C, а фамилии (те, которые вы хотите использовать для заголовков) находятся в столбце C.
Sub PrintNamesInHeader() Dim iPages As Integer Dim iPage As Integer Dim iHorPgs As Integer Dim iHP As Integer Dim iHPNext As Integer Dim iCol As Integer Dim iColLast As Integer Dim lRow As Long Dim lRowLast As Long Dim sPrtArea As String iCol = 1 'Col A iColLast = 3 'Col C With ActiveSheet iPages = ExecuteExcel4Macro("Get.Document(50)") iHorPgs = .HPageBreaks.Count + 1 sPrtArea = .PageSetup.PrintArea For iPage = 1 To iPages iHP = ((iPage - 1) Mod iHorPgs) iHPNext = iHP + 1 If iHP = 0 Then If sPrtArea = "" Then lRow = 1 Else lRow = .Range(sPrtArea).Cells(1).Row End If Else lRow = .HPageBreaks(iHP).Location.Row End If If iHPNext > .HPageBreaks.Count Then lRowLast = .Cells(lRow, iColLast).End(xlDown).Row Else lRowLast = .HPageBreaks(iHPNext).Location.Row - 1 End If .PageSetup.LeftHeader = .Cells(lRow, iCol).Value & _ " - " & .Cells(lRowLast, iColLast) .PrintOut From:=iPage, To:=iPage, preview:=True Next End With End Sub
Когда вы запускаете макрос, он проходит через каждую страницу рабочего листа. Для страницы задаются заголовки, затем печатается одна страница, а затем проверяется и обрабатывается следующая страница.
_Примечание: _
Если вы хотите узнать, как использовать макросы, описанные на этой странице (или на любой другой странице на сайтах ExcelTips), я подготовил специальную страницу, содержащую полезную информацию.
link: / excelribbon-ExcelTipsMacros [Щелкните здесь, чтобы открыть эту специальную страницу в новой вкладке браузера]
.
ExcelTips — ваш источник экономичного обучения Microsoft Excel.
Этот совет (9543) применим к Microsoft Excel 2007, 2010, 2013, 2016, 2019 и Excel в Office 365. Вы можете найти версию этого совета для старого интерфейса меню Excel здесь:
link: / excel-First_and_Last_Names_in_a_Page_Header [Имя и фамилия в заголовке страницы]
.