使用SAS从Excel电子表格中删除数据

使用SAS从Excel电子表格中删除数据,excel,sas,Excel,Sas,我有一个看似简单的问题。尽管我在这里和互联网上到处寻找解决方案,并尝试了一些本应解决问题的方法,但没有任何效果 我已使用以下代码从SAS导出到Excel: libname xls excel '..\Test3.xlsx' scan_text = no ver=2007; proc datasets lib = xls nolist; delete Sweden; quit; data xls.Sweden; set WORK.falcon_cases_2; run; libn

我有一个看似简单的问题。尽管我在这里和互联网上到处寻找解决方案,并尝试了一些本应解决问题的方法,但没有任何效果

我已使用以下代码从SAS导出到Excel:

libname xls excel '..\Test3.xlsx' scan_text = no ver=2007;

proc datasets lib = xls nolist;
   delete Sweden;
quit;

data xls.Sweden;
   set WORK.falcon_cases_2;
run;

libname xls clear;
libname xls excel '..\Test3.xlsx' scan_text = no ver=2007 ;

proc append base = xls.Sweden
            data = WORK.falcon_cases_NorDen_2;
run;

libname xls clear;
然后使用以下代码附加另一个表:

libname xls excel '..\Test3.xlsx' scan_text = no ver=2007;

proc datasets lib = xls nolist;
   delete Sweden;
quit;

data xls.Sweden;
   set WORK.falcon_cases_2;
run;

libname xls clear;
libname xls excel '..\Test3.xlsx' scan_text = no ver=2007 ;

proc append base = xls.Sweden
            data = WORK.falcon_cases_NorDen_2;
run;

libname xls clear;
我必须这样做,因为两个表的数据来自不同的SAS服务器数据表

问题是这部分,

proc datasets lib = xls nolist;
   delete Sweden;
quit;
仅删除仅扩展到放入电子表格的第一个数据集的命名范围。因此,如果第一个表是10行,第二个表是15行,那么在电子表格中总共有25行。删除完成后,仅清除前10行。 我试过使用

proc sql noprint; 
   drop table xls.'Sweden$'n;
quit;
但结果是一样的。这两种解决方案似乎仅限于指定范围内的清晰数据


有什么建议吗?

乔-你最近的评论给了我一个想法。如果我结合出口方法,似乎有可能解决这个问题。我使用导出了第一个表

PROC EXPORT DATA= WORK.falcon_cases_2
OUTFILE= "..\Test3.xlsx" 
DBMS=XLSX REPLACE;
SHEET="Sheet1"; 
RUN;

然后使用与前面相同的追加代码追加第二个表。因此,下次运行PROC EXPORT时,它会替换所有内容,从而解决我的问题:)

最后两个
PROC数据集
步骤是相同的。在导出到excel之前,您可以将数据集附加到单个SAS数据集吗?不幸的是,没有,因为这将是理想的。谢谢mjsqu。我现在用其他代码编辑了这篇文章。然后你可能需要通过DDE或VB脚本或类似的方式使用excel命令来删除选项卡。工作表和范围在概念上与SAS相同,SAS最初创建工作表时,您似乎被卡住了。您可能会考虑打开SAS支持票,看看它们是否有解决方案,或者是否在稍后版本中进行更改。