大家好,我想通过代码形式解决数据收集的问题。
首先,数据都是EXCEL表,都是以店铺名称的形式储存的,但是由于淘宝下载的数据字段过多,所以分成了4个文件,分别是店铺名+A,B,C,D的形式。
由于店铺后期也会有很多,所以想用循环来解决数据导入问题。
以下是测试代码。
%let spname=东讯旗舰店; /*定义执行的店铺名*/
%let sp=dx; /*定义店铺名英文缩写*/
%let pathwork=G:\生意参谋数据(店铺及商品)\; /*定义文件储存地址*/
%let bname=ABCD; /*定义子文件编码不同的部分*/
%let rnum=4 /*定义循环执行次数*/
%macro scf1(px=);
proc import datafile ="&pathwork.&spname.&px." dbms =excel out=shop&px;
sheet="自助取数" ;
options validvarname =any;
getnames=yes;
quit;
%mend scf1;
%macro scf2;
%do i=1 %to %eval(&rnum.);
k=%substr(&bname.,i,1);
%scf1(px=k);
%end;
%mend scf2;
%scf2;
现在调试的问题:
3 %let spname=东讯旗舰店; /*定义执行的店铺名*/
4 %let sp=dx; /*定义店铺名英文缩写*/
5 %let pathwork=G:\生意参谋数据(店铺及商品)\; /*定义文件储存地址*/
6 %let bname=ABCD; /*定义子文件编码不同的部分*/
7 %let rnum=4 /*定义循环执行次数*/
8
9 %macro scf1(px=);
ERROR: 检测到开型代码语句的递归。
10 proc import datafile ="&pathwork.&spname.&px." dbms =excel out=shop&px;
WARNING: 没有解析符号引用 PX。
WARNING: 没有解析符号引用 PX。
11 sheet="自助取数" ;
-----
180
ERROR 180-322: 语句无效或未按正确顺序使用。
12 options validvarname =any;
13 getnames=yes;
--------
180
ERROR 180-322: 语句无效或未按正确顺序使用。
ERROR: 该 %MEND 语句没有匹配的 %MACRO 语句。
14 quit;
15 %mend scf1;
16
17 %macro scf2;
18 %do i=1 %to %eval(&rnum.);
19 k=%substr(&bname.,i,1);
20 %scf1(px=k);
21 %end;
22 %mend scf2;
23
24 %scf2;
WARNING: 没有解析符号引用 PX。
WARNING: 没有解析符号引用 PX。
WARNING: 没有解析符号引用 PX。
WARNING: 没有解析符号引用 PX。
ERROR: 在需要数值操作数的 %EVAL 函数或 %IF 条件中发现字符操作数。
条件是: 4 proc import datafile ="G:\生意参谋数据(店铺及商品)\东讯旗舰店&px." dbms =excel out=shop&px
ERROR: %EVAL 函数没有要求值的表达式,或 %IF 语句没有条件。
ERROR: %TO 值(%DO I 循环中)无效。
ERROR: 宏 SCF2 将终止执行。
好像错了一堆。求大神指点。