搜索
人大经济论坛 附件下载

附件下载

所在主题:
文件名:  multiple_xlsx.xlsx
资料下载链接地址: https://bbs.pinggu.org/a-3079752.html
附件大小:
12.63 KB   举报本内容
【求macro中,使用数据集生成宏变量,要求去掉宏变量取值trailing的空格】
1. 目的:使用macro一次性导入一个excel的多个sheet。尝试了两种方法(方法1:call symputx; 方法2:%syscall set),都遇到了类似的问题:生成的宏变量sheet的值(&sheet的值)无法去掉trailing的空格(按理说call symputx可以去掉空格,不知为何在%macro...%mend中,&sheet取值有trailing空格,不太理解为什么)。


2. 具体求,如何在macro中创建可以去掉宏变量取值空格的方法。
当i=1时,&sheet=sheet1(注意:sheet1后不应有trailing的空格)
当i=2时,&sheet=biao2(注意:biao2后不应有trailing的空格)
当i=3时,&sheet=try3(注意:try3后不应有trailing的空格)
当i=4时,&sheet=test4(注意:test4后不应有trailing的空格)

3. 具体code如下:
/*方法1*/
data excel;
input sheet $9. var $6.;
datalines;
sheet1 sheet
biao2 sheet
try3 sheet
test4 sheet
finalyeah sheet
;
run;

%macro callset();
%let dsid=%sysfunc(open(excel));
%let nobs=%sysfunc(attrn(&dsid, nobs));/*数据库属性*/
%syscall set(dsid);/*与数据库联系起来,生成的宏变量为该数据库的所有变量名*/

%do i=1 %to &nobs;
%let rc=%sysfunc(fetchobs(&dsid, &i));

data _null_;
set excel;
where &i=&nobs;
call symputx(var,sheet);
run;

PROC IMPORT OUT= WORK.a&i
DATAFILE= "保存路径\multiple_xlsx.xlsx"
DBMS=EXCEL REPLACE;
RANGE="&sheet$";
GETNAMES=YES;
MIXED=NO;
SCANTEXT=YES;
USEDATE=YES;
SCANTIME=YES;
RUN;

%put &sheet after;

%end;
%let dsid=%sysfunc(close(&dsid));
%mend;
%callset();


/*方法2*/
data excel;
input sheet $9.;
datalines;
sheet1
biao2
try3
test4
finalyeah
;
run;

%macro callset();
%let dsid=%sysfunc(open(excel));
%let nobs=%sysfunc(attrn(&dsid, nobs));/*数据库属性*/
%syscall set(dsid);/*与数据库联系起来,生成的宏变量为该数据库的所有变量名*/
%do i=1 %to &nobs;
%let rc=%sysfunc(fetchobs(&dsid, &i));

PROC IMPORT OUT= WORK.a&i
DATAFILE= "保存路径\multiple_xlsx.xlsx"
DBMS=EXCEL REPLACE;
RANGE="&sheet$";
GETNAMES=YES;
MIXED=NO;
SCANTEXT=YES;
USEDATE=YES;
SCANTIME=YES;
RUN;

%put &sheet after;
%end;
%let dsid=%sysfunc(close(&dsid));

%mend;
%callset();





    熟悉论坛请点击新手指南
下载说明
1、论坛支持迅雷和网际快车等p2p多线程软件下载,请在上面选择下载通道单击右健下载即可。
2、论坛会定期自动批量更新下载地址,所以请不要浪费时间盗链论坛资源,盗链地址会很快失效。
3、本站为非盈利性质的学术交流网站,鼓励和保护原创作品,拒绝未经版权人许可的上传行为。本站如接到版权人发出的合格侵权通知,将积极的采取必要措施;同时,本站也将在技术手段和能力范围内,履行版权保护的注意义务。
(如有侵权,欢迎举报)
二维码

扫码加我 拉你入群

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

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

GMT+8, 2026-1-20 12:35