Normally you would put the subtotals in the group footer. But the group footer will appear before the next group begins. My understanding is that this is what you don't want. Instead you want the group subtotals to all appear at the end of the report just prior to the grand total.
So how to make the subtotals appear at the end of the report.
An obvious method would be for your group footer to pass the data to vba which builds an array that keeps track of the data and gives it back at the end of the report in the report footer. I haven't done this before, so don't know how challenging it would be to print out the subtotals from the data returned by VBA.
Are there always 19 departments? Or does this fluctuate?
Another option if the number of departments is fixed is to create some hidden fields for each group which the data will be stored in and referenced at the end of the report. You may be able to directly save them into the subtotal field at the end of the report. You'd need 19 fields which would need to have different names (e.g. subtot1, subtot2, etc). Then in the grouping footer, index to the correct subtotal control.
That's the two options I can think of, there may be a better way that I'm not thinking of.
Anyone else have better ideas?
If I'm not understanding correctly what you want, make sure you clarify.