我有一个关于如何在另一个命令中使用SAS数据库中的值的问题。就我而言,我有一个包含两个变量(cell和res)的数据库。 "细胞"包含对Excel工作表中单元格的引用,其中" res"应该复制。
所以我想使用存储在" cell"中的值。在我的命令链接到Excel工作表。此代码不起作用(与||连接不起作用。)
DATA _null_;
SET test;
FILENAME ExcelTmp DDE "EXCEL|[&myInputTemplate.]&mySheet.!" || cell;
FILE ExcelTmp NOTAB LRECL=7000;
PUT res;
RUN;
错误讯息:
ERROR 23-2: Invalid option name ||.
1491! DDE "EXCEL|[&myInputTemplate.]&mySheet.!" || cell;
ERROR: Error in the FILENAME statement.
ERROR 23-2: Invalid option name cell.
1492 FILE ExcelTmp NOTAB LRECL=7000;
ERROR 23-2: Invalid option name NOTAB.
如果我写
FILENAME ExcelTmp DDE "EXCEL|[&myInputTemplate.]&mySheet.!R1C1:R1C1";
然后将值写入Excel中的单元格A1。
是否有一些类似的方法可以在不调用宏的情况下工作?
感谢您的帮助!
了Christoph
答案 0 :(得分:1)
将数据集中的值用作命令/语句的一部分的常用方法是CALL EXECUTE
例程:
DATA _null_;
SET test;
call execute("DATA _NULL_;");
call execute(cats("FILENAME ExcelTmp DDE ""EXCEL|[&myInputTemplate.]&mySheet.!",cell,""";"));
call execute("FILE ExcelTmp NOTAB LRECL=7000;");
call execute("PUT '"||res||"';");
call execute("RUN;");
run;
此代码生成堆叠在缓冲区中的DATA步骤,并在执行上述步骤后执行。所以基本上你会生成尽可能多的DATA NULL 步骤,因为你的test
数据集中有记录。