楼主: 白风黑息11
1891 8

[问答] sas macro变量引用 [推广有奖]

  • 0关注
  • 0粉丝

大专生

85%

还不是VIP/贵宾

-

威望
0
论坛币
1 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
573 点
帖子
56
精华
0
在线时间
65 小时
注册时间
2013-5-10
最后登录
2023-8-9

楼主
白风黑息11 发表于 2020-4-17 11:01:32 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
%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在这里没有引用成功吗?

二维码

扫码加我 拉你入群

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

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

关键词:Macro acr CRO Mac datasets

已有 1 人评分经验 收起 理由
eijuhz + 20 精彩帖子

总评分: 经验 + 20   查看全部评分

沙发
白风黑息11 发表于 2020-4-17 15:29:26
有人吗

藤椅
Cecilia_Xi 在职认证  发表于 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等

板凳
任梦圆rmy 学生认证  发表于 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>

报纸
jg.sas 发表于 2020-4-20 09:15:00
是不是没有定义libname

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

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

7
白风黑息11 发表于 2020-4-20 10:27:13
任梦圆rmy 发表于 2020-4-19 12:24
&amp;nummem是多少?&amp;i的最大值是多少?二者是否相等?假如设置nummem是10,结果你只scan了9个sheet名,当 ...
是相等的,是从定义的libname里面取的数据集名称和个数

8
白风黑息11 发表于 2020-4-20 10:27:18
任梦圆rmy 发表于 2020-4-19 12:24
&amp;nummem是多少?&amp;i的最大值是多少?二者是否相等?假如设置nummem是10,结果你只scan了9个sheet名,当 ...
是相等的,是从定义的libname里面取的数据集名称和个数

9
北方有鱼 发表于 2020-4-20 11:10:00
%qscan换成%scan,quit应是run。
似乎是因为qscan是宏函数,用在宏里和你想要的结果不一样。

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-1-4 18:13