繁体   English   中英

根据字段值将一个SAS表导出到多个Excel工作表中

[英]Export one SAS table into multiple Excel worksheets based on field value

我试图根据一个字段(parent_account)的值将一个SAS表导出到多个Excel工作表中。 我希望每个工作表的名称都与parent_account相同。 我正在使用在http://www.tek-tips.com/viewthread.cfm?qid=1335588上找到的以下代码,但我收到了以下错误消息:

在%EVAL函数或%IF条件(需要数字操作数)中找到了字符操作数。 宏功能%SCAN的参数2不是数字。

%macro export_to_excel();
%local varlist idx var;

proc sql noprint;
  select distinct parent_account into: varlist separated by '||'
  from todays_activity;
quit;

%let idx = 1;
%do %while ( %scan(&varlist, &idx, %str(||)) ne %str() ); 
    %let var=%scan(&varlist, &idx, %str(||));
    proc export data=sashelp.class (where=(parent_account="&var"))
       outfile='My file location\Report.xls'
   dbms=excel; 
   sheet="&var";
quit;
%let idx = %eval(&idx + 1);
%end;
%mend export_to_excel;

%export_to_excel;

您可以尝试使用ODS EXCEL 这是一个使用SASHELP.CLASS数据集的示例。 首先,请确保数据按分组变量排序。

proc sort data=sashelp.class out=class ;
  by sex ;
run;

设置ODS以指向您的目标文件。 告诉它为每个BY组创建一个新表。

ods excel file="&path/class.xlsx"  ;
ods excel options
(sheet_interval="bygroup"
 suppress_bylines="yes"
 sheet_name='GENDER'
);

您可能还想关闭其他输出目标。 然后使用PAGEBY选项打印文件。 并关闭ODS EXCEL目的地

proc print data=class noobs;
  by sex ;
  pageby sex ;
  var _all_;
run;
ods excel close;

要对其进行测试,您可以尝试将其读回为数据。 但是请注意,它将创建带有嵌入式空格的成员名称。

options validmemname=extend;
libname xx xlsx "&path/class.xlsx";
proc copy inlib=xx outlib=work; run;
libname xx clear ;

从SAS日志

NOTE: The data set WORK.GENDER has 9 observations and 5 variables.
NOTE: The data set WORK.'GENDER 2'n has 10 observations and 5 variables.

这可能会有所帮助

%macro export_to_excel;
    proc sql noprint;
    select distinct parent_account into: varlist separated by '@' from todays_activity;
    select count(distinct parent_account) into:n from todays_activity;
    quit;
    %do i=1 %to &n;
    %let var= %scan(&varlist,&i,"@");
    proc export data=sashelp.class (where=(parent_account="&var"))
           outfile='Your file location\Report.xls'
       dbms=excel; 
       sheet="&var";
    run;
    %end;
    %mend export_to_excel;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM