There are two different questions here.
- How to put page numbers in the footer
- How to run apply multiple autofilters printing after each filter is applied.
To the first, you can do that in Page Setup:

- Go into Page Setup:
- Click Header/Footer
- Click the "Custom Footer..." button
- In one of the sections enter "Page &[Page] of &[Pages]". This represents a code to display
Page 1 of 2, Page 2 of 2 etc. at the bottom of each page.
To accomplish the second task, you need a Macro which means you need to save the file as a Macro-enabled file (xlsm). Once you do that, you need to show the Developer tab by:
- Clicking on the flower in the top-left corner of the Excel window, choose "Excel Options"
- Ensure the section named "Popular" is selected
- Ensure that "Show Developer tab in Ribbon" is checked.
Now that you have the buttons visible to manage macros, you need to record a macro which will let you automate the process of applying various filters and printing after each one.
- Click on the Developer tab
- Click the"Record Macro" button.
- Once recording is on, run through the process you want to automate. I.e., apply a filter, print, apply another filter, print etc.
Your macro will be written in VBA (Visual Basic for Applications) and come out something like the following:
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
Addition
Given what you have mentioned, I think you can get close using a function like so:
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
To acheive the overall result you want, you would need to build something that would do something akin to the following pseudo-code:
- Apply filter
- Add page count to global var
- Apply filter
- Add page count to global var
...
- (After last filter)
ActiveSheet.PageSetup.CenterFooter = "Page &P of " & g_TotalPages
- Apply filter
- Print
- Apply filter
- Print
...