【发布时间】:2017-03-02 17:30:57
【问题描述】:
我正在尝试根据字段 (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;
【问题讨论】:
-
您使用的是什么版本的 SAS。如果您使用的是当前版本,您可以尝试使用 ODS EXCEL 并在为每个 BY 组制作新工作表时进行调整。然后只需将 PROC PRINT 与 BY 语句一起使用。
-
对不起,我应该提到这一点。我正在使用 SAS Enterprise Guide 7.11。
-
EG 会话连接到的 SAS 版本对于 EG 版本更为重要。
-
我不确定。有没有简单的验证方法?
-
%put &sysvlong;我说 9.04.01M3P062415