Nombres y apellidos en un encabezado de página (Microsoft Excel)
David está administrando una elección para una sociedad profesional y la lista de votantes elegibles es una hoja de trabajo. Hay aproximadamente 1,200 votantes elegibles, por lo que la impresión tiene más de veinte páginas. David tiene un pie de página con el número de página, lo cual es útil, pero sería genial si pudiera tener, en el encabezado de cada página, el nombre de la página y el apellido en la página.
En Excel no hay una forma nativa de hacer esto. Sin embargo, es relativamente fácil hacerlo en Word, por lo que una solución es pegar los nombres ordenados en un documento de Word y luego agregar el encabezado deseado que muestra los nombres.
Si bien esto puede funcionar, resulta complicado asegurarse de que la versión de Word de la lista siempre esté sincronizada con la versión de Excel de la lista, y viceversa.
Si decide que desea mantener una única versión de la lista de votantes en Excel, la mejor manera de abordar el problema es usar una macro para insertar el nombre y apellido en el encabezado. El código para dicha macro, obviamente, debería adaptarse al diseño de los datos en su hoja de trabajo. La siguiente macro asume que los nombres están en las columnas A a C, con los apellidos (los que desea usar para los encabezados) están en la columna 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
Cuando ejecuta la macro, recorre cada página de la hoja de trabajo. Los encabezados se establecen para la página, luego se imprime la página única y luego se examina y procesa la página siguiente.
_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 (9543) se aplica a Microsoft Excel 2007, 2010, 2013, 2016, 2019 y Excel en Office 365. Puede encontrar una versión de este consejo para la interfaz de menú anterior de Excel aquí:
link: / excel-First_and_Last_Names_in_a_Page_Header [Nombres y apellidos en un encabezado de página]
.