2017-03-02 32 views
0

フィールド(parent_account)の値に基づいて1つのSASテーブルを複数のExcelワークシートにエクスポートしようとしています。各ワークシートの名前をparent_accountと同じにしたい。私はhttp://www.tek-tips.com/viewthread.cfm?qid=1335588にある次のコードを使用していますが、これらのエラーメッセージが表示されています。フィールド値に基づいて1つのSASテーブルを複数のExcelワークシートにエクスポート

数値オペランドが必要な%EVAL関数または%IF条件で文字オペランドが見つかりました。 マクロ関数%SCANの引数2は数値ではありません。

%macro export_to_excel(); 
%local varlist idx var; 

proc sql noprint; 
    select distinct parent_account into: varlist separated by '||' 
    from todays_activity; 
quit; 

%let idx = 1; 
%do %while (%scan(&varlist, &idx, %str(||)) ne %str()); 
    %let var=%scan(&varlist, &idx, %str(||)); 
    proc export data=sashelp.class (where=(parent_account="&var")) 
     outfile='My file location\Report.xls' 
    dbms=excel; 
    sheet="&var"; 
quit; 
%let idx = %eval(&idx + 1); 
%end; 
%mend export_to_excel; 

%export_to_excel; 
+0

役に立つかもしれません。現在のバージョンを使用している場合は、ODS EXCELを使用して、各シートの新しいシートを作成するときに調整してください。次に、BY文でPROC PRINTを使用します。 – Tom

+0

申し訳ありませんが、私はそれを言及すべきでした。 SAS Enterprise Guide 7.11を使用しています。 –

+0

あなたのEGセッションに接続しているSASのバージョンは、EGバージョンにとってより重要です。 – Tom

答えて

0

ODS EXCELを試してみることもできます。次に、SASHELP.CLASSデータセットの使用例を示します。 まず、グループ化変数によってデータがソートされていることを確認します。あなたのターゲットファイルを指すようにODSを設定

proc sort data=sashelp.class out=class ; 
    by sex ; 
run; 

。 BYグループごとに新しいシートを作成するように指示します。

ods excel file="&path/class.xlsx" ; 
ods excel options 
(sheet_interval="bygroup" 
suppress_bylines="yes" 
sheet_name='GENDER' 
); 

他の出力先をオフにすることもできます。 次に、PAGEBYオプションを使用してファイルを印刷します。そして

proc print data=class noobs; 
    by sex ; 
    pageby sex ; 
    var _all_; 
run; 
ods excel close; 

は、あなたがデータとしてで戻ってそれを読んでみてください可能性があり、それをテストするODS EXCEL先を閉じます。しかし、スペースが埋め込まれたメンバー名が作成されることに注意してください。 SASログ

NOTE: The data set WORK.GENDER has 9 observations and 5 variables. 
NOTE: The data set WORK.'GENDER 2'n has 10 observations and 5 variables. 
+0

時間を割いてくれてありがとう。このコードの2番目の部分を実行した後、警告が表示されます。サポートされていないデバイス 'ACTIVEX'がExcelの宛先です。デバイス 'ACTXIMG'を使用しています。 –

+0

まだXLSXファイルを作成していましたか?グラフを作成しようとしている場合にのみ適用されると思います。おそらくあなたのTITLEまたはFOOTNOTEステートメントがそのメッセージをトリガーしましたか? – Tom

+0

XLSXファイルを作成しましたが、破損していて開けませんでした。 –

0

から

options validmemname=extend; 
libname xx xlsx "&path/class.xlsx"; 
proc copy inlib=xx outlib=work; run; 
libname xx clear ; 

これは、使用しているSASのバージョンは何

%macro export_to_excel; 
    proc sql noprint; 
    select distinct parent_account into: varlist separated by '@' from todays_activity; 
    select count(distinct parent_account) into:n from todays_activity; 
    quit; 
    %do i=1 %to &n; 
    %let var= %scan(&varlist,&i,"@"); 
    proc export data=sashelp.class (where=(parent_account="&var")) 
      outfile='Your file location\Report.xls' 
     dbms=excel; 
     sheet="&var"; 
    run; 
    %end; 
    %mend export_to_excel; 
+0

奇妙なことに、それは速やかに実行され、1つのノートで、警告もエラーもありません:注:TAGSETS.SASREPORT13(EGSR)の本文を書く:EGSR。ファイルは作成されません。私はコード行が欠けていますか? –

関連する問題