Как пронумеровать страницы в Excel при печати: 5 работающих способов

Документы Microsoft Excel часто используются не только для расчётов, но и для создания отчётов, которые потом распечатываются. И здесь пользователи сталкиваются с типичной проблемой: как пронумеровать страницы в Excel так, чтобы при печати каждая имела свой порядковый номер? В отличие от Word, где нумерация добавляется в два клика, в электронных таблицах этот процесс имеет свои нюансы.

В этой статье вы найдёте 5 проверенных способов добавления номеров страниц — от стандартных колонтитулов до автоматизации через VBA. Мы разберём, как настроить форматирование номеров, избежать типичных ошибок (например, когда нумерация сбивается при изменении масштаба) и даже научимся создавать динамические номера, которые обновляются при добавлении новых листов. А для тех, кто работает с большими отчётами, приведём пример кода для автоматической нумерации через макросы.

Особое внимание уделим скрытой функции Excel — параметру &[Page], который позволяет вставлять номера страниц напрямую в ячейки, а не только в колонтитулы. Этот приём известен далеко не всем, но существенно упрощает работу с многостраничными документами.

Прежде чем переходить к инструкциям, проверьте: ваш документ уже разбит на страницы? Если нет, используйте Разметка страницы → Разрывы или настройте область печати через Файл → Печать → Настройка полей. Без этого нумерация может работать некорректно.

Способ 1: Нумерация через колонтитулы (стандартный метод)

Самый простой способ добавить номера страниц — использовать встроенные колонтитулы. Этот метод работает во всех версиях Excel (включая Excel 2010, 2016, 2019 и Microsoft 365) и не требует знания формул или макросов.

Чтобы активировать нумерацию:

  1. Перейдите в режим разметки страницы: Вид → Разметка страницы.
  2. Дважды кликните по верхнему или нижнему колонтитулу (в зависимости от того, где хотите разместить номер).
  3. В панели Работа с колонтитулами выберите Номер страницы (значок с цифрой #).
  4. При необходимости отформатируйте шрифт и выравнивание (по центру, справа или слева).

Если нумерация не отображается в режиме предварительного просмотра (Файл → Печать), проверьте:

  • 📄 Установлены ли разрывы страниц (они отображаются пунктирными линиями).
  • 🖨️ Правильно ли настроена область печати (выделена серым фоном в режиме разметки).
  • 🔍 Не скрыты ли колонтитулы в настройках принтера (иногда драйверы сбрасывают параметры).

Способ 2: Вставка номера страницы в ячейку (скрытая функция)

Мало кто знает, но в Excel можно вставить номер страницы прямо в ячейку, используя специальный код. Этот метод полезен, если вам нужно, чтобы номер отображался не в колонтитуле, а внутри таблицы (например, в шапке отчёта).

Для этого:

  1. Выделите ячейку, где должен появиться номер (например, A1).
  2. Введите формулу:
    =EXEC("&[Page]")

    или для новых версий Excel:

    =GET.DOCUMENT(88)
  3. Нажмите Enter. В ячейке появится текущий номер страницы (но только в режиме предварительного просмотра!).

Обратите внимание: этот способ работает только при печати. В обычном режиме просмотра в ячейке будет отображаться ошибка #NAME? или #VALUE!. Чтобы скрыть её, используйте условное форматирование:

  • 🎨 Выделите ячейку с формулой.
  • 🖌️ Перейдите в Главная → Условное форматирование → Создать правило.
  • 📊 Выберите Форматировать только ячейки, которые содержатОшибки.
  • 👁️ Задайте белый цвет шрифта (чтобы ошибка стала невидимой).
Почему формула =EXEC не работает в Excel 2019?

В версиях новее 2016 года команда EXEC была удалена из-за проблем безопасности. Вместо неё используйте макрос или функцию GET.DOCUMENT(88), но учтите, что последняя требует включения надстройки "Пакет анализа" (Файл → Параметры → Надстройки → Управление: Надстройки Excel → Перейти → Пакет анализа).

Способ 3: Автоматическая нумерация через макросы (VBA)

Если вам нужно пронумеровать страницы в большом документе (например, отчёт на 50+ листов), ручная настройка колонтитулов займёт слишком много времени. В этом случае поможет VBA-скрипт, который автоматически добавит номера ко всем листам.

Скопируйте этот код в редактор Visual Basic (Alt + F11):

Sub AddPageNumbers()

Dim ws As Worksheet

For Each ws In ThisWorkbook.Worksheets

With ws.PageSetup

.LeftFooter = "&""Arial,Narrow""&8&P из &N" ' Формат: "1 из 5"

.RightFooter = "&""Arial,Narrow""&8&D" ' Добавляет дату

End With

Next ws

End Sub

Что делает этот скрипт:

  • 📝 Проходит по всем листам в книге.
  • 🔢 Добавляет в левый колонтитул номер страницы в формате "1 из 5".
  • 📅 В правый колонтитул вставляет текущую дату.
  • 🎨 Использует шрифт Arial Narrow размером 8 пт (можно изменить).

Чтобы запустить макрос:

  1. Нажмите Alt + F8, выберите AddPageNumbers.
  2. Кликните Выполнить.
  3. Проверьте результат в режиме предварительного просмотра (Ctrl + F2).
📊 Какой способ нумерации вы используете чаще?
Колонтитулы
Формулы в ячейках
Макросы VBA
Ручная нумерация
Не нумерую

Включить поддержку макросов в Excel (Файл → Параметры → Центр управления безопасностью → Параметры центра управления безопасностью → Включить все макросы)

Сохранить файл в формате .xlsm (с поддержкой макросов)

Проверьте, нет ли защищённых листов (макрос не сработает на защищённых листах)

Сделайте резервную копию файла на случай ошибки-->

Способ 4: Нумерация с учётом разрывов страниц

Если ваш документ содержит ручные разрывы страниц (вставленные через Разметка страницы → Разрывы → Вставить разрыв страницы), стандартная нумерация может сбиваться. Например, вместо "1, 2, 3" вы получите "1, 1, 2". Чтобы этого избежать, используйте динамические ссылки.

Алгоритм действий:

  1. Создайте служебный лист (назовите его, например, "Нумерация").
  2. В ячейку A1 введите формулу:
    =IF(ROW()=1, 1, A1+1)

    и растяните её на столько строк, сколько страниц в документе.

  3. Вернитесь на лист с данными и вставьте в колонтитул ссылку на ячейку:
    &"Нумерация!A"&ROW()

    (это сработает только если страницы идут подряд без пропусков).

Если разрывы страниц настроены нелинейно (например, на листе 10 страниц, но нумерация идёт 1, 3, 5), используйте этот обходной путь:

Проблема Решение Пример кода
Нумерация сбивается после ручных разрывов Использовать счетчик в макросе Dim PageCount As Integer: PageCount = 1
Первая страница нумеруется как "0" Добавить +1 к формуле =GET.DOCUMENT(88)+1
Номера не обновляются при изменении разрывов Пересчитать лист (F9) Application.CalculateFull

Способ 5: Нумерация для печатных форм (с шапкой на каждой странице)

При печати многостраничных форм (например, накладных или актов) часто требуется, чтобы на каждой странице повторялась шапка таблицы и был проставлен номер. Для этого:

  1. Настройте повторяющиеся строки:
    Разметка страницы → Печатаемые titles → Повторяющиеся строки
  2. Добавьте в шапку ячейку с формулой:
    ="Страница " & EXEC("&[Page]") & " из " & EXEC("&[Pages]")
  3. Отформатируйте ячейку так, чтобы она не сливалась с остальным текстом (например, выделите её серым фоном).

Пример оформления для печатной формы:

  • 📌 Логотип компании — верхний левый угол.
  • 📋 Номер документа — верхний правый угол.
  • 🔢 Номер страницы — нижний центральный колонтитул.
  • 📅 Дата печати — нижний правый колонтитул (код: &[Date]).

Типичные ошибки и как их исправить

Даже опытные пользователи Excel сталкиваются с проблемами при нумерации страниц. Вот самые распространённые из них и способы их решения:

1. Номера не отображаются при печати

  • ✅ Проверьте, включена ли опция Печатать колонтитулы в настройках принтера.
  • ✅ Убедитесь, что в колонтитуле не стоит пробел перед &[Page] (иногда это сбивает парсер).
  • ✅ Попробуйте поменять принтер по умолчанию (некоторые драйверы блокируют колонтитулы).

2. Нумерация начинается не с 1

Это происходит, если в документе есть скрытые страницы (например, из-за ручных разрывов) или включена опция "Первая страница отличается". Чтобы сбросить счётчик:

  1. Перейдите в Разметка страницы → Параметры страницы → Колонтитулы.
  2. Снимите галочку Особый колонтитул для первой страницы.
  3. Вручную установите стартовый номер: в колонтитуле вместо &[Page] введите &"Страница " & [Page] + 0.

3. Номера страниц повторяются

Виновник — неправильные разрывы страниц. Исправляем так:

  • 🔍 Удалите все ручные разрывы: Разметка страницы → Разрывы → Сбросить все разрывы страниц.
  • 📏 Настройте автоматические разрывы через Файл → Печать → Настройка полей.
  • 🔄 Обновите нумерацию (если используете макросы, запустите их заново).
Почему в Excel Online нет колонтитулов?

В веб-версии Excel Online функция колонтитулов недоступна. Чтобы пронумеровать страницы, откройте файл в десктопной версии или используйте надстройку "Kutools for Excel", которая эмулирует колонтитулы через ячейки.

FAQ: Частые вопросы о нумерации страниц в Excel

Можно ли пронумеровать страницы в Excel без колонтитулов?

Да, есть три альтернативных способа:

  1. Вставить номер в ячейку через формулу =GET.DOCUMENT(88) (работает не во всех версиях).
  2. Использовать VBA-макрос для динамической нумерации.
  3. Создать служебный лист со счётчиком и ссылаться на него в колонтитулах.

Однако все эти методы имеют ограничения: формулы видны только при печати, а макросы требуют настройки безопасности.

Как сделать нумерацию вида "1/10", "2/10" (текущая страница из общего числа)?

В колонтитуле введите:

&"Страница " & [Page] & " из " & [Pages]

Для ячейки используйте:

="Страница " & EXEC("&[Page]") & " из " & EXEC("&[Pages]")

Если общее число страниц ([Pages]) отображается некорректно, обновите разметку (F9) или пересохраните файл.

Почему при печати номера страниц накладываются на текст?

Это происходит из-за слишком маленьких полей страницы. Исправляем:

  1. Перейдите в Разметка страницы → Поля → Настраиваемые поля.
  2. Увеличьте отступы верхнего или нижнего поля (где находится колонтитул) до 1.5–2 см.
  3. Проверьте, не установлен ли флажок Центрировать на странице (он может сдвигать содержимое).

Если проблема остаётся, экспортируйте документ в PDF и распечатайте оттуда — часто это решает конфликты с драйверами принтера.

Как пронумеровать страницы в книге с несколькими листами?

По умолчанию нумерация в Excel сбрасывается на каждом новом листе. Чтобы сделать сквозную нумерацию:

  1. Используйте VBA-макрос (приведён в Способе 3).
  2. Либо вручную проставьте стартовый номер для каждого листа:
    Sub SetPageStart()
    

    Dim ws As Worksheet, i As Integer

    i = 1

    For Each ws In ThisWorkbook.Worksheets

    ws.PageSetup.FirstPageNumber = i

    i = i + ws.PageSetup.Pages.Count

    Next ws

    End Sub

Учтите: если вы добавите/удалите страницы, нумерацию придётся пересчитывать заново.

Можно ли нумеровать страницы римскими цифрами?

Да, но только через VBA. Добавьте этот код в модуль:

Function RomanNumeral(n As Integer) As String

Dim Romans(), i As Integer, Result As String

Romans = Array("I", "II", "III", "IV", "V", "VI", "VII", "VIII", "IX", "X", "XX", "XXX", "XL", "L")

If n > 0 And n <= 14 Then

RomanNumeral = Romans(n - 1)

Else

RomanNumeral = "Error"

End If

End Function

Затем в колонтитуле используйте:

&"Страница " & RomanNumeral([Page])

Ограничение: этот код поддерживает только цифры от 1 до 14. Для большего диапазона нужна более сложная функция.