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))
セ
記事を書く
セコメントをする