Здесь есть два разных вопроса.
- Как поместить номера страниц в нижний колонтитул
- Как запустить применить несколько автофильтров печати после каждого фильтра.
Во-первых, вы можете сделать это в Page Setup:
- Зайдите в настройки страницы:
- Нажмите верхний / нижний колонтитул
- Нажмите кнопку "Пользовательский нижний колонтитул ..."
- В одном из разделов введите «Страница & [Page] of & [Pages]». Это код для отображения
Page 1 of 2
, Page 2 of 2
и т.д. Внизу каждой страницы.
Чтобы выполнить вторую задачу, вам нужен макрос, что означает, что вам нужно сохранить файл как файл с поддержкой макросов (xlsm). Как только вы это сделаете, вам нужно показать вкладку Разработчик:
- Нажав на цветок в верхнем левом углу окна Excel, выберите "Параметры Excel"
- Убедитесь, что выбран раздел "Популярные"
- Убедитесь, что установлен флажок "Показать вкладку разработчика на ленте".
Теперь, когда у вас есть кнопки, видимые для управления макросами, вам нужно записать макрос, который позволит вам автоматизировать процесс применения различных фильтров и печати после каждого из них.
- Нажмите на вкладку разработчика
- Нажмите кнопку "Запись макроса".
- Когда запись будет включена, выполните процесс, который вы хотите автоматизировать. Т.е. применить фильтр, распечатать, применить другой фильтр, распечатать и т.д.
Ваш макрос будет написан на VBA (Visual Basic для приложений) и будет выглядеть примерно так:
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, _
IgnorePrintAreas:=False
ActiveSheet.Range("$A$3:$A$568").AutoFilter Field:=1, Criteria1:="=a*", _
Operator:=xlAnd
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, _
IgnorePrintAreas:=False
ActiveSheet.Range("$A$3:$A$568").AutoFilter Field:=1, Criteria1:="=b*", _
Operator:=xlAnd
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, _
IgnorePrintAreas:=False
прибавление
Учитывая то, что вы упомянули, я думаю, вы можете приблизиться с помощью функции, например, так:
Public Sub GetTotalPageCount()
Dim horizontalBreaks As Integer
Dim verticalBreaks As Integer
horizontalBreaks = ActiveSheet.HPageBreaks.Count + 1
verticalBreaks = ActiveSheet.VPageBreaks.Count + 1
GetTotalPageCount = horizontalBreaks * verticalBreaks
End Sub
Чтобы получить общий результат, который вы хотите, вам нужно будет создать что-то похожее на следующий псевдокод:
- Применить фильтр
- Добавить количество страниц в глобальную переменную
- Применить фильтр
- Добавить количество страниц в глобальную переменную
...
- (После последнего фильтра)
ActiveSheet.PageSetup.CenterFooter = "Page &P of " & g_TotalPages
- Применить фильтр
- Распечатать
- Применить фильтр
- Распечатать
...