Weekly grouping is more complicated. Do you want a week to be 7 days Sun-Sat regardless of month or year? In other words, what do you want to do about weeks that cross months and years? Also, months do not all have the same number of weeks. Can calculate the date of the first day of each week with DateAdd("d", Weekday(datefield)+1, datefield), and that ignores crossing month and year. However, that does not allow for dynamic quality in the CROSSTAB.
Calculate a week identifier with DatePart("ww", [datefield]) to use as ColumnHeader. A year seems to have 53 weeks. I tested with DatePart("ww", #12/31/2107#) with a variety of years and always get 53.
Also calculate year and month from the datefield to use as RowHeaders.
Then instead of the 12 months in the CROSSTAB, use numbers 1 through 53.
If 53 weeks does not fit your requirements will have to come up with some other algorithm to calculate weekly identifier.
Might find of interest:
https://www.accessforums.net/showthread.php?t=57472
https://www.accessforums.net/showthread.php?t=17555
https://www.accessforums.net/showthread.php?t=49247