我是SAS的新手,在导出数据时遇到了一些问题。我编写了一个宏来生成一些基于某个ID的汇总表。宏为特定proc sql查询中标识的每个ID创建两个表。我可以写出最后两个表,但它会覆盖所有表。我想知道是否有一种方法可以为我的查询中标识的每个ID生成一个包含两个汇总表的工作表。以下是我目前导出数据的代码:
%macro output(x);
ods tagsets.excelxp file="W:\user\test.xls" options(sheet_interval='none');
proc print data=prov_&x;
run;
proc print data=prov_revcd_&x;
run;
ods tagsets.excelxp close;
%mend;
/*Run a loop for each IDcode. Each code will enter the document generation loop*/
%macro loopit(mylist);
%let else=;
%let n = %sysfunc(countw(&mylist)); /*let n=number of codes in the list*/
data
%do I=1 %to &n;
%let val = %scan(&mylist,&I); /*Let val= the ith code in the list*/
%end;
%do j=1 %to &n;
%let val = %scan(&mylist,&j); /*Let val= the jth code in the list*/
/*Run the macro loop to generate the required tables*/
%runtab(&val);
%output&val);
%end;
run;
%mend;
/*Run the macro loop over the list of significant procedure code values*/
%loopit(&varlist);
任何帮助纠正这个问题的人都将不胜感激!谢谢!
答案 0 :(得分:0)
将ods tagsets.excelxp file=
和ods tagsets.excelxp close
移到宏外,否则您每次都会重新创建文件。
您可能还想明确命名工作表。