楼主: Enid_
1504 9

[SAS EM] SAS批量导入excel多sheet文件 [推广有奖]

  • 0关注
  • 0粉丝

高中生

5%

还不是VIP/贵宾

-

威望
0
论坛币
0 个
通用积分
7.4184
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
141 点
帖子
20
精华
0
在线时间
18 小时
注册时间
2021-11-9
最后登录
2023-1-31

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
复制代码
  1. %macro ExcelFiles2sas(folder= , subfd= , exclfd= , startrow= );
  2. *;
  3.         %local _j _cnt _dsid _i _num _s_ext _s_name _filename _rc;
  4.         %let _rc=%qsysfunc(filename(filrf,&folder));

  5.          %if &_rc=0 %then
  6.          %do;
  7.                 %let dsid=%qsysfunc(dopen(&filrf));
  8.                 %if &_dsid>0 %then
  9.                 %do;
  10.                    %let num=%sysfunc(dnum(&_dsid));
  11.                  %if & num>0 %then
  12.                                  %do _i=1 %to &_num;
  13.                                 %let _filename=%sysfunc(dread(&_dsid,&_i));
  14.                                 %let _s_name=%scan(&_filename,1,.);
  15.                                 %let s ext=%scan(& filename,2,.);
  16.                         %if %upcase(&_s_ext)=XLS or%upcase(&_s_ext)=XLSX %then
  17.                         %do;

  18.                                         Libname excellib excel "&folder\&_filename";
  19.                                         data null;
  20.                                          set sashelp.vstabvw end=last;
  21.                                          where libname="EXCELLIB";
  22.                                         memname=upcase(scan(memname,1,'

  23. 但我输入如下代码后,出现报错:
  24. %ExcelFiles2sas(folder=E:\11.9\sas\data, subfd=N , exclfd=N, startrow=1);
  25.           -
  26.           180
  27. WARNING: 没有解析宏 EXCELFILES2SAS 的调用。

  28. ERROR 180-322: 语句无效或未按正确顺序使用。
  29. 请各位大佬帮忙解释一下,是什么地方出问题。
  30. 万分感谢!

  31. ));
  32.                                          call symputx(cats('sheet',n),memname,'L');
  33.                                           if last then call symputx('_cnt',_n_,'L');
  34.                                          run;
  35.                                 Libname excellib clear;
  36.                                        
  37.                                                 %do _j=1 %to &_cnt;
  38.                                                     proc import datafile="&folder\& filename"
  39.                                                              out=%cmpres(&_s_name._&&sheet&_j)
  40.                                                                    dbms=excel replace;
  41.                                                                         range="&&sheet&_j..[        DISCUZ_CODE_2        ]amp;startrow.:65000";
  42.                                                                                 mixed=yes;
  43.                                                                                 getnames=yes;
  44.                                                                   run;
  45.                                                                 %end;
  46.                                         %end;

  47.                                         %else %if %upcase(& s ext)= and &subfd=Y
  48.                                                   and %qsysfunc(indexw(&exclfd,&_filename))=0 %then
  49.                                         %do;
  50.                                         %let rc=%sysfunc(dclose(& dsid));
  51.                                           %xlx2sas(folder=&folder\&_filename,subfd=&subfd,
  52.                                           exclfd=&exclfd, startrow=&startrow)
  53.                                         %end;
  54.                                 %end;
  55.                         %end;
  56.                 %end;
  57.         %let rc=%sysfunc(dclose(&_dsid));

  58.         %mend ExcelFiles2sas;
复制代码


但我输入如下代码后,出现报错:
%ExcelFiles2sas(folder=E:\11.9\sas\data, subfd=N , exclfd=N, startrow=1);
          -
          180
WARNING: 没有解析宏 EXCELFILES2SAS 的调用。

ERROR 180-322: 语句无效或未按正确顺序使用。
请各位大佬帮忙解释一下,是什么地方出问题。
万分感谢!

二维码

扫码加我 拉你入群

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

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

关键词:EXCEL sheet xcel 批量导入 exce

沙发
xiaopingN 发表于 2021-11-10 23:56:14 |只看作者 |坛友微信交流群
漏了一个“\“, 试试 %ExcelFiles2sas(folder=E:\11.9\sas\data\, subfd=N , exclfd=N, startrow=1);

使用道具

藤椅
Enid_ 发表于 2021-11-11 11:09:10 |只看作者 |坛友微信交流群
xiaopingN 发表于 2021-11-10 23:56
漏了一个“\“, 试试 %ExcelFiles2sas(folder=E:\11.9\sas\data\, subfd=N , exclfd=N, startrow=1);
感谢帮助,报错如下:
%ExcelFiles2sas(folder=E:\11.9\sas\data\, subfd=N , exclfd=N, startrow=1);
     -
     180
WARNING: 没有解析宏 EXCELFILES2SAS 的调用。

ERROR 180-322: 语句无效或未按正确顺序使用。

使用道具

板凳
xiaopingN 发表于 2021-11-13 01:14:08 |只看作者 |坛友微信交流群
Enid_ 发表于 2021-11-11 11:09
感谢帮助,报错如下:
%ExcelFiles2sas(folder=E:\11.9\sas\data\, subfd=N , exclfd=N, startrow=1);
...
宏变量名没有拼写对: %let s ext=%scan(& filename,2,.);
改成 %let _s_ext=%scan(& filename,2,.);

使用道具

报纸
xiaopingN 发表于 2021-11-13 01:29:16 |只看作者 |坛友微信交流群
Enid_ 发表于 2021-11-11 11:09
感谢帮助,报错如下:
%ExcelFiles2sas(folder=E:\11.9\sas\data\, subfd=N , exclfd=N, startrow=1);
...
又仔细看了你的code, 好些宏变量名都漏了“-”。

使用道具

地板
Enid_ 发表于 2021-11-23 11:34:24 |只看作者 |坛友微信交流群
xiaopingN 发表于 2021-11-13 01:29
又仔细看了你的code, 好些宏变量名都漏了“-”。
感谢回答。您说得对,SAS报错就是宏无法引用。
但因为我不是很懂宏,所以都是复制他人的。
不知道您是否可以告知哪些宏变量名漏了“-”呢?

使用道具

7
Enid_ 发表于 2021-11-23 11:38:23 |只看作者 |坛友微信交流群
xiaopingN 发表于 2021-11-13 01:29
又仔细看了你的code, 好些宏变量名都漏了“-”。
您好!刚试图修改code,按您的意思,目前宏已经可以引用。
但是仍然报错。
错误如下:
ERROR: 在需要数值操作数的 %EVAL 函数或 %IF 条件中发现字符操作数。条件是: & num>0
ERROR: 宏 EXCELFILES2SAS 将终止执行。

期待您的解答。

使用道具

8
Enid_ 发表于 2021-11-23 11:39:06 |只看作者 |坛友微信交流群
xiaopingN 发表于 2021-11-13 01:29
又仔细看了你的code, 好些宏变量名都漏了“-”。
您好!感谢回复,刚按照您的回答修改问题后,解析宏的问题已解决。

使用道具

9
Enid_ 发表于 2021-11-23 11:39:24 |只看作者 |坛友微信交流群
xiaopingN 发表于 2021-11-13 01:29
又仔细看了你的code, 好些宏变量名都漏了“-”。
ERROR: 在需要数值操作数的 %EVAL 函数或 %IF 条件中发现字符操作数。条件是: & num>0
ERROR: 宏 EXCELFILES2SAS 将终止执行。

使用道具

10
Enid_ 发表于 2021-11-23 11:39:43 |只看作者 |坛友微信交流群
xiaopingN 发表于 2021-11-13 01:29
又仔细看了你的code, 好些宏变量名都漏了“-”。
ERROR: 在需要数值操作数的 %EVAL 函数或 %IF 条件中发现字符操作数。条件是: & num>0
ERROR: 宏 EXCELFILES2SAS 将终止执行。

但是出现了新的报错,请问这个问题怎么理解呢?

使用道具

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

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-4-26 10:44