SAS-将多个表写入一个XLSX工作簿,每张表有2个表

时间:2015-05-01 19:05:38

标签: sas sas-macro

我是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);

任何帮助纠正这个问题的人都将不胜感激!谢谢!

1 个答案:

答案 0 :(得分:0)

ods tagsets.excelxp file=ods tagsets.excelxp close移到宏外,否则您每次都会重新创建文件。

您可能还想明确命名工作表。