• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:マクロでピポッドテーブルを複数作成)

マクロで複数のピポッドテーブルを作成する方法

このQ&Aのポイント
  • マクロを使用して自動的に複数のピポッドテーブルを作成する方法を学びたいです。
  • ピポッドテーブルを製品区分別、業種区分別、担当者別などで作成する方法を知りたいです。
  • マクロ初心者ですが、助けていただけると幸いです。

質問者が選んだベストアンサー

  • ベストアンサー
  • end-u
  • ベストアンサー率79% (496/625)
回答No.1

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を繰り返せば良いです。

emude
質問者

お礼

とても分かりやすかったです、丁寧な回答ありがとうございました。 ちなみにピポッドテーブルの集計要素が二つ(例:受注見込月と製品区分)の場合の見込受注金額をサマリーするにはどうすればよいのでしょうか? 五月雨式の質問で申し訳ありませんがよろしくお願いします。

その他の回答 (2)

  • end-u
  • ベストアンサー率79% (496/625)
回答No.3

': 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系ソフトカテゴリへマルチポストになっています。削除依頼を出しておいてください。

emude
質問者

お礼

多々ご教授ありがとうございました。 お陰で予定より早く作業の目処がたちました。昨日VBAの書籍を購入 しましたのでこれから基本を勉強してみます。 多重投稿は削除しておきました。 不慣れなものでご迷惑をおかけして申し訳ありません。 ありがとうございました。

  • end-u
  • ベストアンサー率79% (496/625)
回答No.2

': 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 ': こんな感じ。 マクロの自動記録からでもわかると思いますが。

emude
質問者

お礼

早速のご回答ありがとうございます。 .RowFields(2).Subtotals(1) = False を .RowFields(1).Subtotals(1) = False にしたらうまくいきました。 まことに申し訳ありませんが、最後のお願いです。 受注見込月が複数年にまたがる可能性が出た為、受注年度を用意し、 ピポッドで絞込みをしようと思い、マクロの記録をやって見ました。 With ActiveSheet.PivotTables("ピボットテーブル66").PivotFields("受注年度")     .Orientation = xlPageField     .Position = 1 End With 上記を付け加えましたがエラーが解消されず困っています。 お手透きの際にでもご教授よろしくお願いします。

関連するQ&A