3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

VBA初心者がピボットテーブルを作成するメモ

Posted at

ピボットテーブル作成

VBAで集計して別シートに張り付けるを考えたけど、ピボットにしたほうが自分でいろいろと加工できるかなと考え、ピボット作成方法をまとめる。

まずは、ピボット用シート作成のVBA。

'システムID別ピボット用シート作成
Sub CreatePivotTableBySystemId()
    'データシート
    Dim DataS As Worksheet
    'ピボットテーブルを作成するシート
    Dim PivotS As Worksheet
    'ピボットキャッシュ用変数
    Dim PCache As PivotCache

    Set DataS = ThisWorkbook.Worksheets("データ")

    '「データ」シートからピボットキャッシュを作成
    Dim lowRow As Long
    lowRow = ActiveWorkbook.Worksheets("データ").Cells(Rows.Count, 2).End(xlUp).Row
    Set PCache = ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:=DataS.Range("B1:E" & lowRow))

    'ピボットテーブル用シートを追加
    Worksheets.Add
    ActiveSheet.Name = "システムID別集計"
    Set PivotS = ThisWorkbook.Worksheets("システムID別集計")

    'ピボットテーブル用シートにピボットテーブル作成
    PCache.CreatePivotTable TableDestination:=PivotS.Range("A1"), TableName:="システムID別集計"
End Sub

次に追加したピボット用シートに項目を設定するVBA。

'システムID別ピボット用シートに項目設定
Sub AddPivotFieldsBySystemId()
    'ピボットテーブルがあるシート
    Dim PivotS As Worksheet

    Set PivotS = ThisWorkbook.Worksheets("システムID別集計")

    'ピボットテーブルに行と列フィールドを追加
    PivotS.PivotTables("システムID別集計").AddFields ColumnFields:=Array("場所"), RowFields:=Array("システムID")

    'ピボットテーブルに値フィールドを追加
    PivotS.PivotTables("システムID別集計").AddDataField Field:=PivotS.PivotTables("システムID別集計").PivotFields("時間"), Function:=xlSum
End Sub
3
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?