首页 > 解决方案 > SAS Enterprise Guide - 根据标准将临时“WORK”表导出到同一工作簿中的多个工作表中

问题描述

我已经搜索和搜索,但我似乎无法找到解决方案。

我正在使用 8.2 Update 4 (8.2.4.1261)(32 位)。

有人可以帮我将表格导出到包含多张工作表的 Excel 文件中吗?

示例:表格包含美国职业运动队的列表(以及他们所在的城市/昵称和联赛)。每个选项卡将按联赛(NBA、MLB、NFL、NHL、MLS)分隔。我该怎么办?

我还想将当前日期添加到输出 Excel 文件名中。根据我的阅读,我可以使用 sysdate 创建一个变量。只是不确定如何将其合并到代码中。

标签: sasexport-to-excelenterprise-guidesysdate

解决方案


  • 每个工作表名称都基于一个组。
    • 在 SAS 中,我们使用BY语句来指定组成组的变量——在你的情况下,它是一个变量league
  • BY语句使特殊标记在输出期间可用,#BYVAR<n>并且#BYVAL<n>
    • 您希望league在输出期间的值很重要(工作表名称),所以#BYVAL1
  • ODS EXCEL工作表名称构造在OPTIONS选项中指定。您可以BY在选项中使用令牌。
    • 你要ODS EXCEL ... OPTIONS (sheet_name="#BYVAL1") ...;
  • 输出过程中的BY语句会产生额外的一行<BYVAR>=<BYVAL>,这将在您的 Excel 输出中 产生干扰。
    • 防止噪音OPTIONS NOBYLINE;

例子:

ods excel file='output.xlsx' options(sheet_name="#BYVAL1");

options nobyline;

proc print noobs data=sashelp.cars;
  by make;
run;

ods excel close;

生产

在此处输入图像描述

更多的

如果您希望BY变量出现在PROC PRINT输出中,请使用VAR _ALL_;语句,或明确列出所需的列。

如果您需要导入和合并在 Excel 中编辑的数据,或者您正在制作各种图表等,则将变量添加BY到输出中将使事情变得更容易。实际上,如果您在 Excel 中进行其他工作,最好生成一个包含所有数据的工作表,然后使用自动过滤器(这是一个ODS EXCEL选项)和 Excel 数据透视表/图表。(Proc可以TABULATEREPORT数据透视表可以做的一个很大的子集。)


推荐阅读