SASのデータセットを開き右クリックしてWHEREを選んで・・・がとても使いにくく感じたので自作アドインを利用しています。
※1:Excelのアドインを利用します。
※2:SASのプロシジャなどを利用してExcelに出力する機能ではありません(それはここ)。
処理概要
クリップボードに保存されたSASデータセットをExcelに貼り付けます。
使いやすく加工します。
コード(VBAです)
Sub PasteDataset() 'クリップボードの内容をペースト Range("A1").Select ActiveSheet.Paste 'セル内折り返しを解除 Selection.WrapText = False '1行目と2行目を削除 Rows("1:2").Select Selection.Delete Shift:=xlUp 'C2セルでウィンドウ枠を固定 Range("C2").Select ActiveWindow.FreezePanes = True '1行目にフィルタをセットし、左揃えにする Rows("1:1").Select Selection.AutoFilter Selection.HorizontalAlignment = xlLeft '行幅と列幅を調整 Cells.Select Cells.EntireRow.AutoFit Cells.EntireColumn.AutoFit 'カーソルをA1セルにセットして終了 Range("A1").Select End Sub
コードがある場合のVBAアドインの作成方法はこちら。
処理イメージ
こんな感じの処理になります。
まずSAS上で右クリックメニューから「クリップボードにコピー」します。
データセットはSASHELP.AAARFMを利用しています。
そのままExcelにペーストするとこうなります。
このままだととても使いにくいです。
クリップボードにコピーした状態(ペーストしていない状態)でアドインを実行すると以下のようになります。
使いやすくなったと思います。
直近の利用コード(2021.11.7)
赤字部分を追加して利用しています。
変数が多い場合などは最初から変数をグループ化しておくことで見やすくなります。
Sub PasteDataset()
'クリップボードの内容をペースト
Range("A1").Select
ActiveSheet.Paste
'セル内折り返しを解除
Selection.WrapText = False
'グループ化
Selection.Columns.Group
Columns("A:B").Select
Range("B1").Activate
Selection.Columns.Ungroup
'1行目と2行目を削除
Rows("1:2").Select
Selection.Delete Shift:=xlUp
'C2セルでウィンドウ枠を固定
Range("C2").Select
ActiveWindow.FreezePanes = True
'1行目にフィルタをセットし、左揃えにする
Rows("1:1").Select
Selection.AutoFilter
Selection.HorizontalAlignment = xlLeft
'行幅と列幅を調整
Cells.Select
Cells.EntireRow.AutoFit
Cells.EntireColumn.AutoFit
'カーソルをA1セルにセットして終了
Range("A1").Select
End Sub
コメント