3

我正在运行一个宏程序来分析数据集。在我的宏结束时,我使用了 ODS 语句和 proc Report 来导出我的结果。我想要的是:每次我使用新数据集运行宏程序时,结果将在同一个 Excel 文件的新工作表中更新,而不删除旧数据集的工作表,也不删除旧 Excel 文件。请帮我。

4

1 回答 1

1

解决这个问题的基本方法是将主要ods tagsets.excelxp语句放在宏迭代之外。然后只控制宏里面的工作表。

假设你有:

%macro run_me(sheet=,sex=);
  ods tagsets.excelxp options(sheet_name="&sheet.");
  proc print data=sashelp.class;
    where sex="&sex.";
  run;
%mend run_me;

ods tagsets.excelxp file="c:\temp\test.xml";
  %run_me(sheet=Male,sex=M);
  %run_me(sheet=Female,sex=F);
ods tagsets.excelxp close;

您只需要在其余分析中小心输出即可;您可能需要使用ods select如下语句:

ods tagsets.excelxp select none;

在宏开始时,然后当您想再次开始输出时

ods tagsets.excelxp select all;

(当然,或者只是选择您想要的特定输出。)

于 2015-07-01T14:50:54.277 回答