you may not have the correct data in your report to do this or you may not be ordering the data properly. a cross-tab is made up of a row & column combination and each one of those row column combinations could be thought of as a record. as an example, if you wanted to limit each cross-tab to 24 records as in your top cross-tab example, you would have to bring in 3 unique column fields for each group and also 8 unique row fields for each group.
have a look at the attached report. extract the contents and change the .txt extension to .rpt. i have set up the grouping formula so that it limits each group to 30 records. this is because i want 3 columns per cross-tab and 10 rows.
i have also sorted in the Record Sort by the month name first (the column field) and then the product name (the row field) so that the data is in the correct order in the group. if you look at the data, you will notice that there are exactly 3 distinct months per group and also 10 distinct product names per group. there are 30 unique month X product combinations or 30 unique records per group.
and just as important, the Command object that the report is based on also ensures that every product & month combination are returned. if i was missing one product or one month, then the cross-tab objects would not be created correctly on the report.
it is very important that you bring in your data like this or you will not be able to use this cross-tab technique properly on your report. this technique is a workaround as the cross-tab object does not allow you to specify when you want to create a new row using a numeric value.