電子書籍の厳選無料作品が豊富!

Excelのマクロのを使って、売上表から、マクロで、ピボットテーブルを起動して、月別売上表を自動作成したいですが、可能でしょうか?
可能でしたら、マクロのコードをどのように書けばよいか、ご教授をお願いいたします。
想定している操作は次のようです。
1. ピボットテーブルに読み込むデータの範囲は、マクロ起動前に、関数を使ってデータの件数を検出して、たとえば、売上表のセル”E1”に与え、表示しておく。
2. 写真の例では、読み込み開始位置のセルは”B3”、終了位置は”D21”をl売上表”E1”に与え、表示しておく。
3. ピボット作成マクロを起動して、ピボットテーブルを起動させて、テーブル読み込み範囲が設定してあるセル”E1”を参照して、範囲情報を取得する(B3:D21)。
4. ピボットに、ラベルを月別と金額をマクロで指定する。
5. これらにより、「月別表」というシートに、ピボットテーブルの表が表示され完成する。
よろしくお願いいたします。

「Excelマクロで、ピボットテーブルを起」の質問画像

A 回答 (2件)

あなたが提示したマクロをみると、


提示されているレイアウトと実際のレイアウトが異なるように見えます。
(なぜ、F5:H30なのかが意味不明)

提示されているレイアウトが正しいとして、以下のようにしてください。
①売上明細表のシート名:売上表 とします。
②作成するピボットテーブルのシート名:売上0 とします。
(空のシートを作成して、シート名を"売上0"に設定しておいてください)
③売上表のセルE1にB2:D21となるように設定しておいてください。
(範囲は見出しも含めます。B3:D21ではなくB2:D21であることに注意してください)

④以下のマクロを標準モジュールに登録し、実行してください。
Public Sub ピボット作成()
Dim ws As Worksheet
Dim ps As Worksheet
Dim rg As Range
Set ws = Worksheets("売上表")
Set ps = Worksheets("月別0")
Set rg = ws.Range(ws.Range("E1").Value)
' ピボットキャッシュ作成 → ピボットテーブル作成
ThisWorkbook.PivotCaches.Create(xlDatabase, rg).CreatePivotTable ps.Range("A3"), "ピボット1"

' フィールドを設定
With ps.PivotTables("ピボット1")
.PivotFields("月別").Orientation = xlRowField
.PivotFields("金額").Orientation = xlDataField
End With
End Sub

添付図のようなピボットテーブルが作成されます。
左側が売上表、右側が月別0になります。
「Excelマクロで、ピボットテーブルを起」の回答画像2
    • good
    • 0
この回答へのお礼

ご回答ありがとうございました。明日に詳細に拝見しますので、少しお持ちください。

お礼日時:2025/01/31 23:09

こんばんは



ご質問内容がよくわかりませんけれど、「ピボットテーブルを作成するマクロを作りたい」ってことだと解釈しました。

もしそうであるなら、ほとんど「マクロの記録」で作成可能です。
上記の「ほとんど」以外の部分というのは、
 ・対象セル範囲の設定
 ・ピボットテーブルを作成するセル位置
ぐらいですが、後者はいつも同じなのなら、固定値で良いので変える必要はないですね。

一旦、(例えば、ご提示のB3:D21)の範囲でマクロを作成しておいて、後で範囲だけを、ご質問文にあるように変更可能なように修正すれば良いでしょう。

「E1セルの値」というのがどのような形式なのか不明ですが、値を参照するには
 Worksheets("データのあるシート名").Range("E1").Value
で取得できますので、その値からセル範囲を作成して上記の記録の「セル範囲」部分に置換えればよいでしょう。
セル範囲の部分は文字列で指定されていると思いますので、簡単な文字列操作を勉強すれば難しいことはないだろうと想像します。
    • good
    • 0
この回答へのお礼

早速、ご回答ありがとうございます。
ご指摘のとおり、「マクロの記録」を使って、ピボット表は一旦完成しました。
その後、マクロを実行しましたが、下記エラーとなり、実行できませんでした。
エラーを解決をご教授お願いします。

Range("F5:H30").Select
Application.CutCopyMode = False
Sheets.Add

<ここからエラー>
ActiveWorkbook.Worksheets("月別0").PivotTables("ピボットテーブル2").PivotCache. _
CreatePivotTable TableDestination:="Sheet1!R3C1", TableName:="ピボットテーブル1", _
DefaultVersion:=8
<ここまでエラー>

なお、下記のご指摘は、分からないために何もしておりません。
・対象セル範囲の設定
・ピボットテーブルを作成のセル位置

マクロ知識乏しくよろしくお願いいたします。

お礼日時:2025/01/29 11:39

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

このQ&Aを見た人はこんなQ&Aも見ています


おすすめ情報

このQ&Aを見た人がよく見るQ&A