プロが教える店舗&オフィスのセキュリティ対策術

エクセルのマクロで、ピボットテーブルを2つ作成しています。
それを集計表シートに貼り付けています。

「A1」に「ピボットテーブル1」の名前を入れて
1つ目のピボットテーブルの範囲が「A2:G10」の場合

11行目は空欄
「A12」に「ピボットテーブル2」の名前
「A13(:D20など)」ピボットテーブル2
というようにピボットテーブルを貼り付けていきたいのですが、
良い方法はありませんか?

現在は2つ目のピボットテーブルを「A25」に貼り付けるように
設定していますが、1つ目のピボットテーブルの大きさが毎回
変化するので、見た目がきれいではありません。

2つ目のピボットテーブルを貼り付ける部分のVBAを記入しておきます。
「貼り付け」シートのデータを元にピボットテーブルを作成しています。
ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
"貼り付け!R2C15:R300C19", Version:=xlPivotTableVersion12).CreatePivotTable _
TableDestination:="集計表!R25C1", TableName:="ピボットテーブル13", DefaultVersion _
:=xlPivotTableVersion12
Sheets("集計表").Select
Cells(25, 1).Select

A 回答 (1件)

ピボットテーブルの貼り付け先として、


変動するデータ範囲の取得方法を知りたいという事ですね。
ピボットテーブル1作成後、最終行を取りたいなら、
Endプロパティを使うのが最もオーソドックスかと思います。
(作成前に集計表シートをクリアしておく事が前提)

こちらのページが解かり易いので参考にしてください。
http://www.niji.or.jp/home/toru/notes/8.html

実際のサンプルは以下。ピボット作成はテキトーです。

Sub test()
  Dim r As Range

  With ActiveWorkbook

    Set r = Sheets("集計表").Range("A1")
    r.Value = "ピボットテーブル1"

    With .PivotCaches.Create(SourceType:=xlDatabase, _
                 SourceData:="貼り付け!R2C15:R300C19") _
                 .CreatePivotTable(TableDestination:=r.Offset(1), _
                          TableName:=r.Value)
      .AddFields RowFields:="Field1", _
            ColumnFields:="Field2"
      .AddDataField .PivotFields("Field3"), "Field3計", xlSum
    End With

    '2コ目のピボットテーブル
    With Sheets("集計表")
      'シート最大行から[Ctrl]+[↑]で上に跳んで、止まったセルの2コ下。
      Set r = .Cells(.Rows.Count, 1).End(xlUp).Offset(2)
    End With
    r.Value = "ピボットテーブル2"

    With .PivotCaches.Create(SourceType:=xlDatabase, _
                 SourceData:="貼り付け!R2C15:R300C19") _
                 .CreatePivotTable(TableDestination:=r.Offset(1), _
                          TableName:=r.Value)
      .AddFields RowFields:="Field1", _
            ColumnFields:="Field2"
      .AddDataField .PivotFields("Field3"), "Field3計", xlSum
    End With
  
  End With

  Set r = Nothing
End Sub
    • good
    • 0
この回答へのお礼

まだまだVBAを理解できていないのですが、
何とかマクロを完成させることが出来ました!!

どうもありがとうございました。

お礼日時:2010/02/27 23:23

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!