VBAでGetPivotDataを使う
2018-01-27



VBAでピボットテーブルを作り、さらにその集計データを利用しようとしたけれど、よいサンプルが見当たらなかったので作ってみました。

GetPivotData関数を使っているサイトはいくつかサンプルがありますが、GetPivotDataメソッドを使っているサイトは私が見た範囲では見当たりませんでした。

参考にしたサイトはこちらです。
http://www.databison.com/how-to-read-data-from-pivot-table-using-vba/

元データはこんな感じです。
禺画像]

作成されるピボットテーブルはこんな感じです。
禺画像]

そして、ピボットから作られるリストはこんな感じです。

禺画像]

で、コードです。

Qtyも追加してデータフィールドを二つにしたパターンも作ってみましたが、複雑になるのでやめました。

データフィールドが複数ある場合には、基本的には次のように回すことになりますが、列名に対する考慮が必要になりそうです。
for uDataField in uPvtTable.DataFields

後は、ループの中でif文等を使って、煮るなり焼くなりすればよいと思います。

Option Explicit

Sub uPivotDemo()
    Dim uPvtTableName As String
    
    uCreatePivot
    uCopyPvtValue
End Sub

Private Sub uCreatePivot()
    Dim uTable As ListObject
    Dim uTableSheet As Worksheet
    Dim uBasename As String
    
    Dim uPvtsheet As Worksheet
    Dim uPvtCache As PivotCache
    Dim uPvtTableName As String
    
    Set uTable = ActiveCell.ListObject
    If uTable Is Nothing Then
        If ActiveSheet.ListObjects.Count = 0 Then
            MsgBox "テーブルが必要です"
            Exit Sub
        Else
            Set uTable = ActiveSheet.ListObjects(1)
        End If
    End If
    
    Set uTableSheet = ActiveSheet
    uBasename = uTableSheet.Name

    'ピボットテーブル用シート追加
    Set uPvtsheet = Sheets.Add(after:=Worksheets(uTableSheet.Name))

続きを読む

[IT]

コメント(全0件)
コメントをする


記事を書く
powered by ASAHIネット