I have a sample database that includes a custom form made from a cross-tab. You do need to create a report with a fixed number of columns. Access report width are restricted so 20 columns is probably all you can get on a single page width at landscape. So, keep that in mind as you are designing this. I think the max width is ~ 22" so it is two landscape pages max.
The process starts with a select query that gathers the unique values that will be columns and adds them to a table. So, for example, if your data set is expenses and those will be the column headings. The table might look like this:
1, Oil
2, Water
3, Lawn
4, Electric
5, Snow Removal
The columns of the report are bound to fields named 1,2,3,4,5 and the code in the report builds the column header fields from this table so the column names end up as Oil, Water, Lawn, Electric, Snow Removal as you would want.
I've left the old versions here but ALWAYS go to the last post to get the current version. This database contains two examples (using the same technique) of how to take data that is properly normalized and display it so that it looks like a spreadsheet (rows displayed as columns) but is...
www.access-programmers.co.uk