/*用于专门导出excel的宏*/
%macro exp(id,out_name,n);
data tmp;
set &in_data.;
where id='&id.'; /*id是字符串类型*/
where id=%sysevalf(&id.);/*id是数值类型*/
run;
/*按你的意思是每个客户信息生成单独的excel,但是后面的
sheet名字又不一样,所以,两种都帮你处理好了
1、如果是新的excel,则xls.sheet&n.改为xls.sheet
2、如果是单独的excel,不同的sheet,则&out_name._&n..xlsx 改为&out_name..xlsx
*/
libname xls excel "C:\excel\&out_name._&n..xlsx";
data xls.sheet&n.(dblabel=yes);
set tmp;
run;
libname xls;
%mend exp;
/*处理excel导入*/
proc import datafile=""
out=out_d
dbms=excel replace;
getnames=yes;
sheet='';
run;
/*对导入的数据集 out_d ,按照客户号,或者id进行拆分*/
/*把单独的id号/客户号拿出来*/
proc sort data=out_d out=out_d_01 nodupkey;by id;run;
/*进行循环生成excel*/
data _null_;
set out_d_01;
call execute('%exp('||id||','||"out_names"||','||_n_||')');
run;