全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
1819 8
2020-04-17
%macro export_excel;
%do i=1 %to &nummem;
  %let tname=%qscan(&memlist,&i,\);
  
  proc export data=rawfile.&tname
  outfile='D:\study\datasets.xlsx'
  dbms=xlsx
  replace label;
  sheet="&tname";
  quit;
%end;
%mend export_excel;

%export_excel
跑这段代码想打sas数据集转成excel,会报错ERROR: "RAWFILE." is not a valid name.,但是我%put rawfile.&tname的时候是可以rawfile.AE rawfile.BU rawfile.CAT rawfile.CCT rawfile.CM出来的,请问下为什么放在data=rawfile.&tname的时候会认为是把rawfile.当成数据集名字了,&tname在这里没有引用成功吗?

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2020-4-17 15:29:26
有人吗
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2020-4-18 21:20:42
按理说这个用法是可以的,我用sashelp的air数据库试了一下,正常导出了。

%let var=air;
%put &var;
PROC EXPORT DATA= sashelp.&var
            OUTFILE= "C:\Users\Desktop\b.xlsx"
            DBMS=xlsx REPLACE;
     SHEET="sheet2";
RUN;

请查看下每个i取值对应的&tname都只有一个吗?比如i=1时,&tname=AE, i=2时,&tname=BU等
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2020-4-19 12:24:46
白风黑息11 发表于 2020-4-17 11:01
%macro export_excel;
%do i=1 %to &nummem;
  %let tname=%qscan(&memlist,&i,\);
&amp;nummem是多少?&amp;i的最大值是多少?二者是否相等?假如设置nummem是10,结果你只scan了9个sheet名,当第10次循环时就可能报错。<br>

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2020-4-20 09:15:00
是不是没有定义libname
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2020-4-20 10:25:53
Cecilia_Xi 发表于 2020-4-18 21:20
按理说这个用法是可以的,我用sashelp的air数据库试了一下,正常导出了。

%let var=air;
每个表的名字都是不一样的
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群