← コード一覧へ戻る
実務ピボット・テーブル

ピボットテーブルを作成する

Sheet1のA1:B5から商品別売上を集計するピボットテーブルを新しいシートに作ります。

実行前に確認

  • 新しいシートとピボットキャッシュを追加します。SalesPivotExampleという既存のピボット名がない練習用ブックで試してください。
  • 数値の売上、空欄のない一意の見出しが必要です。元データ変更後の再集計には更新が必要です。

1サンプルコード

Sub Example1198()
    Dim ws As Worksheet
    Dim s As Worksheet, dest As Worksheet
    Dim pc As PivotCache
    Dim pt As PivotTable
    Set ws = ThisWorkbook.Worksheets("Sheet1")
    For Each s In ThisWorkbook.Worksheets
        If s.Name = "集計例" Then
            MsgBox "集計例シートが既にあります。新しい練習用ブックで試してください。"
            Exit Sub
        End If
    Next s
    Set dest = ThisWorkbook.Worksheets.Add(After:=ThisWorkbook.Worksheets(ThisWorkbook.Worksheets.Count))
    dest.Name = "集計例"
    Set pc = ThisWorkbook.PivotCaches.Create(SourceType:=xlDatabase, _
        SourceData:=ws.Range("A1:B5").Address(ReferenceStyle:=xlR1C1, External:=True))
    Set pt = pc.CreatePivotTable(TableDestination:=dest.Range("A3"), TableName:="SalesPivotExample")
    pt.PivotFields("商品").Orientation = xlRowField
    pt.AddDataField pt.PivotFields("売上"), "売上合計", xlSum
End Sub
表で見る処理のイメージ実行前・実行後のセルを見比べる

商品ごとの売上を、新しい「集計例」シートで集計します。

A・B・Cは列、1・2・3は行です。例えば「B2」はB列の2行目のセルです。この表は説明用のサンプルです。

実行前

Sheet1:元データ A1:B5

実行前のサンプル。列記号と行番号でセルの位置を確認できます。
AB
1商品売上
2りんご600
3みかん240
4りんご360
5みかん160

実行後

集計例:A3からの出力例

実行後のサンプル。列記号と行番号でセルの位置を確認できます。
AB
3行ラベル売上合計
4りんご960
5みかん400
6総計1360

色付きは注目する場所です。「—」は未入力、「(空文字)」は数式などが返す空の文字列を表します。

Sheet1の元データは残ります。「集計例」シートがまだ存在しない前提です。りんごは600+360=960、みかんは240+160=400、総計1360。コンパクト形式・総計ありの場合の代表的な配置です。コードはレイアウト・並べ替え順・総計表示を明示しないため、見出し文言・項目順・総計の表示はExcelの設定で異なります。

使い方・実行手順を確認する4つの手順で、コードの使い方を確認できます
  1. 1

    練習用のブックを.xlsm形式で保存し、Sheet1という名前のシートを用意します。A1に商品、B1に売上、A2:B5へ順に「りんご・100」「みかん・200」「りんご・150」「みかん・50」を入力します。

  2. 2

    Alt+F11でVBEを開き、[挿入]→[標準モジュール]へコードを貼り付けます。

  3. 3

    A1:B5が集計元です。商品・売上は見出しと完全に一致させます。

  4. 4

    マクロ内にカーソルを置いてF5で実行します。集計例シートに商品別合計(各250)が作られます。

使っている機能の公式ドキュメント(Microsoft Learn)