BookmarkSubscribeRSS Feed
Q1983
Lapis Lazuli | Level 10

*sum='Total MSRP Dollars$' *f=comma16.2 /*f=dollar16.2*/

This is a snippet of code in my ODS code.  I want to display $25,000.00 as 25,000

 

I tried variations of comma16.0, comma6 and number6 however what would work in this instance?

6 REPLIES 6
ballardw
Super User

What does it display when you use comma16.0 ??? Make sure when using Comma6. that you have the period at the end of the format name.

Are you getting any messages in the log?

Reeza
Super User

A comma format should work fine, but this is PROC TABULATE code, not an ODS issue.

How does ODS come into play? Or is not showing properly in a specific ODS destination?

Cynthia_sas
SAS Super FREQ
Also, with TABULATE and a format in the TABLE statement, you need to be aware of both format precedence and possibly style precedence. It would be more useful for you to show ALL your code and ALL your ODS statements because, for example, you could have your format on the wrong item or you could have your format in the wrong dimension and need the FORMAT_PRECEDENCE option.

cynthia
Q1983
Lapis Lazuli | Level 10

Lets try this again with some data

data cars(keep= make type weight cnt);

set sashelp.cars;

if make in ('Acura','BMW');

cnt=1;

run;

/*Acura SUV 4451 1

Acura Sedan 2778 1

Acura Sedan 3230 1

Acura Sedan 3575 1

Acura Sedan 3880 1

Acura Sedan 3893 1

Acura Sports 3153 1

BMW SUV 4023 1

BMW SUV 4824 1

BMW Sedan 3219 1

BMW Sedan 3197 1

BMW Sedan 3560 1

BMW Sedan 3461 1*/

OPTIONS orientation=landscape papersize="letter" missing=' ';

options nocenter ls=145 ps=60 orientation=landscape nomprint nosymbolgen

FMTSEARCH=(datamart) nosource2 compress=yes reuse=yes;

%let ReportName = Proc_tab_Example_;

%let ReportOut = &ReportName&pbd_date_key.;

%LET VERSION = V1;

%Let FNote1=Confidential and Proprietary Information.;

%put REPORTNAME=&ReportName;

%put REPORTOUT=&ReportOut;

ods listing close;

options missing=' ' topmargin=0.30in bottommargin=0.01in rightmargin=0.25in leftmargin=0.25in;

ODS TAGSETS.ExcelXP file="&ReportOut..xml" Path="&OutDir" style=&dors_style;

%CoverSheet(&ReportName,&pbd_date_key,&Version);

ODS TAGSETS.ExcelXP

options(sheet_interval='none'

default_column_width='9'

sheet_name="exampl"

center_horizontal="no"

frozen_headers = "Yes"

Orientation='Landscape'

embedded_titles='Yes'

fittopage="No"

blackandwhite="No"

Embedded_Footnotes='Yes'

absolute_column_width='9'

autofit_height="Yes");

 

%NoAccountLogic(cars,&ReportName);

Proc tabulate data=cars order= data format=10. S=[cellwidth=80];

Class make type;

Var weight cnt;

Table make=' ' all={label='Total' S=[background = lightblue cellwidth=80]} *[STYLE=[Font_Weight=BOLD]],

type*(cnt=''*sum='Count of Units' cnt=''*colpctn='% of Units'*f=number8.2

weight=''*sum='weight' *f=comma9.0 weight='' *colpctSum='% of weight'*f=number8.2 )

all={ label='Grand Total' S=[background = lightblue]} *[STYLE=[Font_Weight=BOLD]]

;

label colpctn = '% of Units';

keylabel n='';

run;

ods listing close;

options missing=' ' mlogic mprint;

TITLE; FOOTNOTE;

 

 

%InsertCode(proc_tab_example.sas);

 

ODS TAGSETS.ExcelXP close;

ods listing;

quit;

 

The percentage columns work perfectly as I used f=number8.2 however the weight column does not format as desired. I want something like 17,356 and 46,660

% of Units weight % of weight
27.78 17356 27.11
72.22 46660 72.89
100 64016 100
Cynthia_sas
SAS Super FREQ
Hi: Nobody can run your code because you do not provide the macro programs that are sprinkled throughout the program.
cynthia
Cynthia_sas
SAS Super FREQ

Did you see this error in the LOG?

ERROR: The format NUMBER was not found or could not be loaded.

 

So if you look at the HTML version of your output, you will see that SAS sent the comma format because you can see it used in the HTML output. However Excel ignores the comma (and the decimal places) as shown here:

comma_format.png

 

You will need to investigate the use of the TAGATTR style attribute (which has had a LOT of previous postings here in the forum) to get an example of how to modify your TABLE statement so that you can send Excel a format that it can respect.

 

  Here's a paper that illustrates the use of TAGATTR: https://support.sas.com/resources/papers/proceedings11/266-2011.pdf

 

cynthia

sas-innovate-2024.png

Don't miss out on SAS Innovate - Register now for the FREE Livestream!

Can't make it to Vegas? No problem! Watch our general sessions LIVE or on-demand starting April 17th. Hear from SAS execs, best-selling author Adam Grant, Hot Ones host Sean Evans, top tech journalist Kara Swisher, AI expert Cassie Kozyrkov, and the mind-blowing dance crew iLuminate! Plus, get access to over 20 breakout sessions.

 

Register now!

How to Concatenate Values

Learn how use the CAT functions in SAS to join values from multiple variables into a single value.

Find more tutorials on the SAS Users YouTube channel.

Click image to register for webinarClick image to register for webinar

Classroom Training Available!

Select SAS Training centers are offering in-person courses. View upcoming courses for:

View all other training opportunities.

Discussion stats
  • 6 replies
  • 1510 views
  • 1 like
  • 4 in conversation