l*****8 发帖数: 483 | 1 我有很多个excel file, column name 都是在第三行,但每个文件都有不同的数量的
row.
如果用range的话, range='A3:最后一个数据“
我想写macro, 因为每个文件的大小不一样, 请问我如何知道最后一个数据的range.
我只知道起点是A3
不希望需要手工写 A3:N5 或者A3:N99。。。。。
谢谢
%macro read_excel(filename,dataset_name,tab_name);
proc import out=&dataset_name
datafile="C:\Documents and Settings\gguo\Desktop\&filename..xls"
dbms=excel2000 replace;
range ="&tab_name.&A3:最后一个数据的range";
getnames=yes;
run; |
d**********r 发帖数: 24123 | 2 知道最后一个数据的range要动到DDE才行。
为什么不直接使用最大的range import呢?然后再到SAS里去掉不要的行就可以了。 |
l***a 发帖数: 12410 | 3 问个题外的,现在sas还没法直接import 2007/2010版excel的sheet吧
【在 d**********r 的大作中提到】 : 知道最后一个数据的range要动到DDE才行。 : 为什么不直接使用最大的range import呢?然后再到SAS里去掉不要的行就可以了。
|
d**********r 发帖数: 24123 | 4 至少去年的package还不可以。
【在 l***a 的大作中提到】 : 问个题外的,现在sas还没法直接import 2007/2010版excel的sheet吧
|
l*****8 发帖数: 483 | 5
对不起, 问题不小心发你邮箱里去了
我的第三行才是真正的column name, 如果用大的range, 那column 就是 f1 f2 f3 f4
,而不是 name, age, gender etc...
或者有什么方法可以rename f1 等于 第三行里的值。
谢谢
【在 d**********r 的大作中提到】 : 知道最后一个数据的range要动到DDE才行。 : 为什么不直接使用最大的range import呢?然后再到SAS里去掉不要的行就可以了。
|
d**********r 发帖数: 24123 | 6 如果所有文件的变量个数都一样,那么你就写一个Macro rename 所有的 f1 f2 f3 f4
就好了。
实际上这样有个好处,就是所有的变量都会已text的方式读入。
如果文件的变量个数不一样,那就比较麻烦了,要写比较复杂的macro来读入第一行,存入Macro variables,然后再rename相应的variables。
或者你如果懂VBA的话,可以用DDE
f4
【在 l*****8 的大作中提到】 : : 对不起, 问题不小心发你邮箱里去了 : 我的第三行才是真正的column name, 如果用大的range, 那column 就是 f1 f2 f3 f4 : ,而不是 name, age, gender etc... : 或者有什么方法可以rename f1 等于 第三行里的值。 : 谢谢
|
l*****8 发帖数: 483 | |
l*****8 发帖数: 483 | |
l***a 发帖数: 12410 | 9 我也奇怪过,从excel的第几行开始import,按理说很简单的一个option,SAS还不给提
供一个
f4
,存入Macro variables,然后再rename相应的variables。
【在 d**********r 的大作中提到】 : 如果所有文件的变量个数都一样,那么你就写一个Macro rename 所有的 f1 f2 f3 f4 : 就好了。 : 实际上这样有个好处,就是所有的变量都会已text的方式读入。 : 如果文件的变量个数不一样,那就比较麻烦了,要写比较复杂的macro来读入第一行,存入Macro variables,然后再rename相应的variables。 : 或者你如果懂VBA的话,可以用DDE : : f4
|
d**********r 发帖数: 24123 | 10 还有一个方法就是把Excel 存为csv文件,然后读入csv文件就可以选择starting row。
不过这样的话每个sheet都要save一次。
如果会VBA的话,就很容易,不会VBA的话,就比较麻烦。
【在 l***a 的大作中提到】 : 我也奇怪过,从excel的第几行开始import,按理说很简单的一个option,SAS还不给提 : 供一个 : : f4 : ,存入Macro variables,然后再rename相应的variables。
|