スナックelve 本店

バツイチ派遣40代女性の日記です

Excelのスライサーが便利だった

f:id:elve:20211214210901p:plain
というわけで、初めてスライサーなる機能を使ってみました。こいつは便利だ! ダミーデータ5000件
hogehoge.tk

住所が凶悪なセル結合
f:id:elve:20211210220043p:plain

ばらして少し分類する。年代追加
f:id:elve:20211210220615p:plain

班(ランダム1-10)を3つの課に分ける
f:id:elve:20211214200212p:plain

ちょい順番変えて整えますか。後値貼り付けしておきましょう。
f:id:elve:20211214200648p:plain

この黄色い個人情報はいらないから削除。
f:id:elve:20211214200522p:plain

マクロ概要を考える。

  1. A,C,H列で区切り位置を実行して数値に変換
  2. テーブルを作成
  3. シート追加
  4. 新しいシートにA:D,F:I,J,Kのスライサーを追加

シート1はpersonal_infomation
シート1のマクロ

Sub add_kugiri()
    '区切り位置
    Columns("A:A").TextToColumns
    Columns("C:C").TextToColumns
    Columns("H:H").TextToColumns
    'テーブル作成
    Me.ListObjects.Add(xlSrcRange, Range("A1").CurrentRegion, , xlYes).Name = "ソース"
    Me.ListObjects("ソース").TableStyle = "TableStyleLight9"
    Me.ListObjects("ソース").ShowTableStyleColumnStripes = True
End Sub

シート2はslicer
標準モジュール

Sub makeTable()
    'slicerのページ選択
    Sheet2.Select
    '列幅20字
    Columns.ColumnWidth = 20
    
    'slicerタイトル
    Dim slTitle: slTitle = Array("", "連番", "課", "班", "性別", "都道府県", "郵便番号", "年代", "出身地", "血液型")

    Dim i As Integer
    Dim t As Double
    Dim l As Double
    Dim w As Double
    Dim h As Double
    
    For i = 1 To UBound(slTitle)
        t = Sheet2.Cells(1, i).Top
        l = Sheet2.Cells(1, i).Left
        w = Sheet2.Cells(1, i).Width
        h = Range(Sheet2.Cells(1, i), Sheet2.Cells(10, i)).Height
        
        ActiveWorkbook.SlicerCaches.Add(Sheet1.ListObjects("ソース"), slTitle(i)).Slicers.Add _
            ActiveSheet, , slTitle(i), slTitle(i), t, l, w, h

    Next

End Sub

f:id:elve:20211214204503p:plain

コレ例えば、1課の30代以上の北海道の顧客・・・とか
f:id:elve:20211214210450p:plain

とても視覚的にわかるんすよ!! コレは便利!!(2回め)