hiko-blog

VBA業務改善

MENU

Excelピボット生成

Sub CreatePivotTable()
    Dim wsData As Worksheet
    Dim wsPivot As Worksheet
    Dim rngData As Range
    Dim pvtTable As PivotTable
    Dim pvtField As PivotField
    
    ' データがあるワークシートを指定
    Set wsData = Worksheets("Sheet1") ' シート名を適切に変更
    
    ' データの範囲を自動で取得
    Dim lastRow As Long
    Dim lastCol As Long
    
    lastRow = wsData.Cells(wsData.Rows.Count, "A").End(xlUp).Row
    lastCol = wsData.Cells(1, wsData.Columns.Count).End(xlToLeft).Column
    
    Set rngData = wsData.Range("A1:" & Cells(lastRow, lastCol).Address)
    
    ' 新しいワークシートを作成し、ピボットテーブルを配置
    Set wsPivot = Sheets.Add
    Set pvtTable = wsPivot.PivotTableWizard(SourceType:=xlDatabase, SourceData:=rngData, TableDestination:=wsPivot.Range("A3"))
    
    ' ピボットテーブルにフィールドを追加
    Set pvtField = pvtTable.PivotFields("項目1") ' カテゴリの列を適切な列名に変更
    pvtField.Orientation = xlRowField
    
    Set pvtField = pvtTable.PivotFields("項目2") ' 金額の列を適切な列名に変更
    pvtField.Orientation = xlDataField
    
    ' ピボットテーブルのデザインを設定(オプション)
    With pvtTable
        .InGridDropZones = True
        .RowAxisLayout xlTabularRow
    End With
End Sub