如何获取excel文件中不同工作表的范围,以便在宏中导入?


我正在尝试导入几个具有多张工作表的文件。每个工作表中的变量名称从不同的行开始。我当前的代码允许我获得一个数据集中的所有工作表名称。我使用它将表名存储在宏列表中,然后在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