- ベストアンサー
マクロで複数のピポッドテーブルを作成する方法
- マクロを使用して自動的に複数のピポッドテーブルを作成する方法を学びたいです。
- ピポッドテーブルを製品区分別、業種区分別、担当者別などで作成する方法を知りたいです。
- マクロ初心者ですが、助けていただけると幸いです。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
Sub test() Dim ws As Worksheet Dim r As Range With ActiveWorkbook Set ws = Worksheets.Add With .Sheets("案件一覧(DSG)") Set r = .Range("W2", .Range("B2").End(xlDown)) End With With .PivotCaches.Add(SourceType:=xlDatabase, _ SourceData:=r.Address(external:=True)) With .CreatePivotTable(TableDestination:=ws.Range("A1")) .AddFields RowFields:="製品区分" With .PivotFields("見込" & Chr(10) & "受注金額") .Orientation = xlDataField .Caption = "合計 : 金額" .Function = xlSum End With End With With .CreatePivotTable(TableDestination:=ws.Range("D1")) .AddFields RowFields:="製品区分" With .PivotFields("見込" & Chr(10) & "受注金額") .Orientation = xlDataField .Caption = "合計 : 金額" .Function = xlSum End With End With With .CreatePivotTable(TableDestination:=ws.Range("H1")) .AddFields RowFields:="製品区分" With .PivotFields("見込" & Chr(10) & "受注金額") .Orientation = xlDataField .Caption = "合計 : 金額" .Function = xlSum End With End With End With End With Set r = Nothing Set ws = Nothing End Sub 一例としてはこんな感じです。 PivotCachesをまず追加して、同じPivotCacheからCreatePivotTableを繰り返せば良いです。
その他の回答 (2)
- end-u
- ベストアンサー率79% (496/625)
': With .CreatePivotTable(TableDestination:=ws.Range("A1")) .AddFields RowFields:=Array("受注見込月", "製品区分"), _ PageFields:="受注年度" .RowFields("受注見込月").Subtotals(1) = False With .PivotFields("見込" & vbLf & "受注金額") .Orientation = xlDataField .Caption = "合計 : 金額" .Function = xlSum End With End With ': ヘルプも活用して、コードの意味を理解し、基本から押さえたほうが良いですよ。 #Office系ソフトカテゴリへマルチポストになっています。削除依頼を出しておいてください。
お礼
多々ご教授ありがとうございました。 お陰で予定より早く作業の目処がたちました。昨日VBAの書籍を購入 しましたのでこれから基本を勉強してみます。 多重投稿は削除しておきました。 不慣れなものでご迷惑をおかけして申し訳ありません。 ありがとうございました。
- end-u
- ベストアンサー率79% (496/625)
': With .CreatePivotTable(TableDestination:=ws.Range("A1")) .AddFields RowFields:=Array("受注見込月", "製品区分") '"受注見込月"ごとの集計が不要な場合は次行を非コメント '.RowFields(2).Subtotals(1) = False With .PivotFields("見込" & vbLf & "受注金額") .Orientation = xlDataField .Caption = "合計 : 金額" .Function = xlSum End With End With ': こんな感じ。 マクロの自動記録からでもわかると思いますが。
お礼
早速のご回答ありがとうございます。 .RowFields(2).Subtotals(1) = False を .RowFields(1).Subtotals(1) = False にしたらうまくいきました。 まことに申し訳ありませんが、最後のお願いです。 受注見込月が複数年にまたがる可能性が出た為、受注年度を用意し、 ピポッドで絞込みをしようと思い、マクロの記録をやって見ました。 With ActiveSheet.PivotTables("ピボットテーブル66").PivotFields("受注年度") .Orientation = xlPageField .Position = 1 End With 上記を付け加えましたがエラーが解消されず困っています。 お手透きの際にでもご教授よろしくお願いします。
お礼
とても分かりやすかったです、丁寧な回答ありがとうございました。 ちなみにピポッドテーブルの集計要素が二つ(例:受注見込月と製品区分)の場合の見込受注金額をサマリーするにはどうすればよいのでしょうか? 五月雨式の質問で申し訳ありませんがよろしくお願いします。