我正在尝试导入几个具有多张工作表的文件。每个工作表中的变量名称从不同的行开始。我当前的代码允许我获得一个数据集中的所有工作表名称。我使用它将表名存储在宏列表中,然后在do循环中使用proc import来导入每个表。我面临的问题是,每个工作表上的数据都是从不同的行开始的。我想知道是否有一种方法可以获得每个工作表中的行号,这样我就可以在导入宏中添加代码来指定每个工作表的特定范围。
**********GETTING TAB NAMES****************
PROC SQL noprint;
CONNECT TO pcfiles (path = "[ENTER FILE PATH HERE]");
CREATE TABLE TABS_NAMES as
SELECT * from connection to pcfiles (PCFILES::SQLColumns "","","","");
DISCONNECT FROM pcfiles;
QUIT;
**********CLEANING TAB NAMES****************
Data Tab_names_1;
set TABS_NAMES;
Clean_tab_name = dequote(tranwrd(TABLE_NAME,"$",""));
if prxmatch ('/print/i',Table_name) > 0 then delete;
keep TABLE_CAT Clean_tab_name;
run;
Proc sort data = Tab_names_1 out = Tab_names_2 nodupkey;
by _all_;
run;
**********STORING TAB NAMES****************
Proc sql noprint;
select TABLE_CAT, Clean_tab_name
into :Path1-:Path999, :Tab_Name1-:Tab_name999
from Tab_names_2;
%let max=&sqlobs.;
quit;
***************IMPORTING FILES*********
%MACRO Import;
%do i=1 %to &max.;
Proc import
datafile = "&&Path&i.."
out = Raw_Data_&i..
dbms = excelcs
replace;
sheet = "&&Tab_Name&i..";
run;
%end;
%mend;
%Import;
转载请注明出处:http://www.yinxuebaozhuang.com/article/20230526/2105662.html