データセットをExcelに貼り付けて使いやすく加工する(アドイン)

スポンサーリンク

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

コメント