Hi:
I doubt it was PROC TRANSPOSE -- if TRANSPOSE created a numeric variable _200911 (which it -must- have if you can successfully use the DOLLAR11.2 format), then I doubt the creation method is a factor. You could run an experiment to explicitly create a numeric copy of _200911:
[pre]
data new;
set ...;
length new_v200911 8;
new_v200911 = _200911;
run;
[/pre]
and then run your EXCELXP code using both new_v200911 and _200911 and see if new_v200911 comes across as numeric or text in Excel. But even if the new variable did come across as numeric I'm not sure what that would mean.
As I said, since you're using a dollar format with _200911, it would have to be numeric. Interestingly, when I run the program below, even the character variable _2009xx comes across as numeric in Excel, due to TAGATTR, even though it is CHARACTER in SAS. I guess it just shows that Excel likes and respects Excel formats more than it respects SAS formats.
It's a puzzle. My recommendation is to work with Tech Support.
cynthia
[pre]
data test;
length _2009xx $11;
set sashelp.prdsale;
_200911 = actual;
_2009xx = put(actual, dollar11.2);
run;
ods tagsets.excelxp file="c:\temp\testcurr2.xls" style=sasweb
options(sheet_name="Payments" frozen_headers="yes");
PROC PRINT data=test(obs=3) LABEL split='*';
format actual predict _200911 dollar11.2;
id month ;
var actual /style(data)={tagattr="format:$#,#00.00"};
var predict /style(data)={tagattr="format:Currency"};
var _200911 /style(data)={tagattr="format:Currency"};
var _2009xx / style(data)={tagattr="format:Currency"};
sum actual predict _200911 ;
run;
ods tagsets.excelxp close;
[/pre]