I see what you mean, for nested row headers -- which is what my VAR1*VAR2 implied in "PROCTABspeak". I should have written VAR1, VAR2. Here's the output: And here's the messy dataset when the resulting ODS Excel file is imported: data are out of register with their nested row headers. I was hasty in writing VAR1*VAR2, I should have written *VAR1, VAR2*n (...VAR2*colpctn VAR2*rowpctn) ", ie, not nested rows, but a simple single level of row, single level of column crosstab (with corresponding column and row percents if I like): %if &colrow=CRb %then /*NNNN CCCC RRRR*/ TABLE &var1=' ' ALL='TOTAL', (&var2=' ' ALL='Total')*n='Number'*f=comma10. (&var2=' ' ALL='Total')*colpctn='Percent'*f=&Cpctformat (&var2=' ' ALL='Total')*rowpctn='Row percent'*f=&Rpctformat) ; I think this kind of PROC TAB output might export/import more cleanly, but I haven't tried it yet.
... View more