Документы Microsoft Excel часто используются не только для расчётов, но и для создания отчётов, которые потом распечатываются. И здесь пользователи сталкиваются с типичной проблемой: как пронумеровать страницы в Excel так, чтобы при печати каждая имела свой порядковый номер? В отличие от Word, где нумерация добавляется в два клика, в электронных таблицах этот процесс имеет свои нюансы.
В этой статье вы найдёте 5 проверенных способов добавления номеров страниц — от стандартных колонтитулов до автоматизации через VBA. Мы разберём, как настроить форматирование номеров, избежать типичных ошибок (например, когда нумерация сбивается при изменении масштаба) и даже научимся создавать динамические номера, которые обновляются при добавлении новых листов. А для тех, кто работает с большими отчётами, приведём пример кода для автоматической нумерации через макросы.
Особое внимание уделим скрытой функции Excel — параметру &[Page], который позволяет вставлять номера страниц напрямую в ячейки, а не только в колонтитулы. Этот приём известен далеко не всем, но существенно упрощает работу с многостраничными документами.
Прежде чем переходить к инструкциям, проверьте: ваш документ уже разбит на страницы? Если нет, используйте Разметка страницы → Разрывы или настройте область печати через Файл → Печать → Настройка полей. Без этого нумерация может работать некорректно.
Способ 1: Нумерация через колонтитулы (стандартный метод)
Самый простой способ добавить номера страниц — использовать встроенные колонтитулы. Этот метод работает во всех версиях Excel (включая Excel 2010, 2016, 2019 и Microsoft 365) и не требует знания формул или макросов.
Чтобы активировать нумерацию:
- Перейдите в режим разметки страницы:
Вид → Разметка страницы. - Дважды кликните по верхнему или нижнему колонтитулу (в зависимости от того, где хотите разместить номер).
- В панели
Работа с колонтитуламивыберитеНомер страницы(значок с цифрой #). - При необходимости отформатируйте шрифт и выравнивание (по центру, справа или слева).
Если нумерация не отображается в режиме предварительного просмотра (Файл → Печать), проверьте:
- 📄 Установлены ли разрывы страниц (они отображаются пунктирными линиями).
- 🖨️ Правильно ли настроена область печати (выделена серым фоном в режиме разметки).
- 🔍 Не скрыты ли колонтитулы в настройках принтера (иногда драйверы сбрасывают параметры).
Способ 2: Вставка номера страницы в ячейку (скрытая функция)
Мало кто знает, но в Excel можно вставить номер страницы прямо в ячейку, используя специальный код. Этот метод полезен, если вам нужно, чтобы номер отображался не в колонтитуле, а внутри таблицы (например, в шапке отчёта).
Для этого:
- Выделите ячейку, где должен появиться номер (например,
A1). - Введите формулу:
=EXEC("&[Page]")или для новых версий Excel:
=GET.DOCUMENT(88) - Нажмите
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 пт (можно изменить).
Чтобы запустить макрос:
- Нажмите
Alt + F8, выберитеAddPageNumbers. - Кликните
Выполнить. - Проверьте результат в режиме предварительного просмотра (
Ctrl + F2).
Включить поддержку макросов в Excel (Файл → Параметры → Центр управления безопасностью → Параметры центра управления безопасностью → Включить все макросы)
Сохранить файл в формате .xlsm (с поддержкой макросов)
Проверьте, нет ли защищённых листов (макрос не сработает на защищённых листах)
Сделайте резервную копию файла на случай ошибки-->
Способ 4: Нумерация с учётом разрывов страниц
Если ваш документ содержит ручные разрывы страниц (вставленные через Разметка страницы → Разрывы → Вставить разрыв страницы), стандартная нумерация может сбиваться. Например, вместо "1, 2, 3" вы получите "1, 1, 2". Чтобы этого избежать, используйте динамические ссылки.
Алгоритм действий:
- Создайте служебный лист (назовите его, например, "Нумерация").
- В ячейку
A1введите формулу:=IF(ROW()=1, 1, A1+1)и растяните её на столько строк, сколько страниц в документе.
- Вернитесь на лист с данными и вставьте в колонтитул ссылку на ячейку:
&"Нумерация!A"&ROW()(это сработает только если страницы идут подряд без пропусков).
Если разрывы страниц настроены нелинейно (например, на листе 10 страниц, но нумерация идёт 1, 3, 5), используйте этот обходной путь:
| Проблема | Решение | Пример кода |
|---|---|---|
| Нумерация сбивается после ручных разрывов | Использовать счетчик в макросе | Dim PageCount As Integer: PageCount = 1 |
| Первая страница нумеруется как "0" | Добавить +1 к формуле | =GET.DOCUMENT(88)+1 |
| Номера не обновляются при изменении разрывов | Пересчитать лист (F9) |
Application.CalculateFull |
Способ 5: Нумерация для печатных форм (с шапкой на каждой странице)
При печати многостраничных форм (например, накладных или актов) часто требуется, чтобы на каждой странице повторялась шапка таблицы и был проставлен номер. Для этого:
- Настройте повторяющиеся строки:
Разметка страницы → Печатаемые titles → Повторяющиеся строки - Добавьте в шапку ячейку с формулой:
="Страница " & EXEC("&[Page]") & " из " & EXEC("&[Pages]") - Отформатируйте ячейку так, чтобы она не сливалась с остальным текстом (например, выделите её серым фоном).
Пример оформления для печатной формы:
- 📌 Логотип компании — верхний левый угол.
- 📋 Номер документа — верхний правый угол.
- 🔢 Номер страницы — нижний центральный колонтитул.
- 📅 Дата печати — нижний правый колонтитул (код:
&[Date]).
Типичные ошибки и как их исправить
Даже опытные пользователи Excel сталкиваются с проблемами при нумерации страниц. Вот самые распространённые из них и способы их решения:
1. Номера не отображаются при печати
- ✅ Проверьте, включена ли опция
Печатать колонтитулыв настройках принтера. - ✅ Убедитесь, что в колонтитуле не стоит пробел перед
&[Page](иногда это сбивает парсер). - ✅ Попробуйте поменять принтер по умолчанию (некоторые драйверы блокируют колонтитулы).
2. Нумерация начинается не с 1
Это происходит, если в документе есть скрытые страницы (например, из-за ручных разрывов) или включена опция "Первая страница отличается". Чтобы сбросить счётчик:
- Перейдите в
Разметка страницы → Параметры страницы → Колонтитулы. - Снимите галочку
Особый колонтитул для первой страницы. - Вручную установите стартовый номер: в колонтитуле вместо
&[Page]введите&"Страница " & [Page] + 0.
3. Номера страниц повторяются
Виновник — неправильные разрывы страниц. Исправляем так:
- 🔍 Удалите все ручные разрывы:
Разметка страницы → Разрывы → Сбросить все разрывы страниц. - 📏 Настройте автоматические разрывы через
Файл → Печать → Настройка полей. - 🔄 Обновите нумерацию (если используете макросы, запустите их заново).
Почему в Excel Online нет колонтитулов?
В веб-версии Excel Online функция колонтитулов недоступна. Чтобы пронумеровать страницы, откройте файл в десктопной версии или используйте надстройку "Kutools for Excel", которая эмулирует колонтитулы через ячейки.
FAQ: Частые вопросы о нумерации страниц в Excel
Можно ли пронумеровать страницы в Excel без колонтитулов?
Да, есть три альтернативных способа:
- Вставить номер в ячейку через формулу
=GET.DOCUMENT(88)(работает не во всех версиях). - Использовать VBA-макрос для динамической нумерации.
- Создать служебный лист со счётчиком и ссылаться на него в колонтитулах.
Однако все эти методы имеют ограничения: формулы видны только при печати, а макросы требуют настройки безопасности.
Как сделать нумерацию вида "1/10", "2/10" (текущая страница из общего числа)?
В колонтитуле введите:
&"Страница " & [Page] & " из " & [Pages]
Для ячейки используйте:
="Страница " & EXEC("&[Page]") & " из " & EXEC("&[Pages]")
Если общее число страниц ([Pages]) отображается некорректно, обновите разметку (F9) или пересохраните файл.
Почему при печати номера страниц накладываются на текст?
Это происходит из-за слишком маленьких полей страницы. Исправляем:
- Перейдите в
Разметка страницы → Поля → Настраиваемые поля. - Увеличьте отступы верхнего или нижнего поля (где находится колонтитул) до 1.5–2 см.
- Проверьте, не установлен ли флажок
Центрировать на странице(он может сдвигать содержимое).
Если проблема остаётся, экспортируйте документ в PDF и распечатайте оттуда — часто это решает конфликты с драйверами принтера.
Как пронумеровать страницы в книге с несколькими листами?
По умолчанию нумерация в Excel сбрасывается на каждом новом листе. Чтобы сделать сквозную нумерацию:
- Используйте VBA-макрос (приведён в Способе 3).
- Либо вручную проставьте стартовый номер для каждого листа:
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. Для большего диапазона нужна более сложная функция.