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

No.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になります。

No.1
- 回答日時:
こんばんは
ご質問内容がよくわかりませんけれど、「ピボットテーブルを作成するマクロを作りたい」ってことだと解釈しました。
もしそうであるなら、ほとんど「マクロの記録」で作成可能です。
上記の「ほとんど」以外の部分というのは、
・対象セル範囲の設定
・ピボットテーブルを作成するセル位置
ぐらいですが、後者はいつも同じなのなら、固定値で良いので変える必要はないですね。
一旦、(例えば、ご提示のB3:D21)の範囲でマクロを作成しておいて、後で範囲だけを、ご質問文にあるように変更可能なように修正すれば良いでしょう。
「E1セルの値」というのがどのような形式なのか不明ですが、値を参照するには
Worksheets("データのあるシート名").Range("E1").Value
で取得できますので、その値からセル範囲を作成して上記の記録の「セル範囲」部分に置換えればよいでしょう。
セル範囲の部分は文字列で指定されていると思いますので、簡単な文字列操作を勉強すれば難しいことはないだろうと想像します。
早速、ご回答ありがとうございます。
ご指摘のとおり、「マクロの記録」を使って、ピボット表は一旦完成しました。
その後、マクロを実行しましたが、下記エラーとなり、実行できませんでした。
エラーを解決をご教授お願いします。
Range("F5:H30").Select
Application.CutCopyMode = False
Sheets.Add
<ここからエラー>
ActiveWorkbook.Worksheets("月別0").PivotTables("ピボットテーブル2").PivotCache. _
CreatePivotTable TableDestination:="Sheet1!R3C1", TableName:="ピボットテーブル1", _
DefaultVersion:=8
<ここまでエラー>
なお、下記のご指摘は、分からないために何もしておりません。
・対象セル範囲の設定
・ピボットテーブルを作成のセル位置
マクロ知識乏しくよろしくお願いいたします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
Excel VBAについて。こんな動作をさせるためにはどう書けばよいでしょうか。
Visual Basic(VBA)
-
VBAでFOR NEXT分を Application.OnTimeを使って
Visual Basic(VBA)
-
Cのプログラムからアクセスできないファイル名の一括変更方法
C言語・C++・C#
-
-
4
Excelのマクロについて教えてください。
Visual Basic(VBA)
-
5
ExcelのVBAコードについて教えてください。
Visual Basic(VBA)
-
6
VBA 同じフォルダ内のすべてのファイルに同じセルをペーストしたい
Visual Basic(VBA)
-
7
エクセルのブック名の付け方
Excel(エクセル)
-
8
VBA 最終行の取得がうまくいかず上書きされてしまいます。
Visual Basic(VBA)
-
9
VBAの「To」という語句について
Visual Basic(VBA)
-
10
VBAでエクセルのテキストデータをクリップボードに格納したい。
Visual Basic(VBA)
-
11
エクセルVBA 段落番号自動取得方法
Visual Basic(VBA)
-
12
VBAの質問(Msgboxについて)です
Visual Basic(VBA)
-
13
ExcelのVBAコードについて教えてください。
Visual Basic(VBA)
-
14
アセンブリ言語について。
その他(プログラミング・Web制作)
-
15
エクセルマクロについて教えて下さい。
Excel(エクセル)
-
16
Excelのマクロについて教えてください。
Visual Basic(VBA)
-
17
VBA 2次元配列の出力
Visual Basic(VBA)
-
18
excelVBAについて。
Excel(エクセル)
-
19
Visualbasicの現状について教えてください
Visual Basic(VBA)
-
20
excelVBAについて。
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBAでCOPYを繰り返すと、処理が...
-
vba textboxへの入力について教...
-
Vba セルの4辺について罫線が有...
-
【VBA】 結合セルに複数画像と...
-
複数のExcelファイルをマージす...
-
VBAでセルの書式を変えずに文字...
-
Vba Array関数について教えてく...
-
vbsでのwebフォームへの入力制限?
-
pdfファイルの複数添付 引数の型
-
【マクロ】シートの変数へ入れ...
-
【マクロ】売上一覧YYYYMMDDHHS...
-
【マクロ】開いているブックの...
-
エクセルのマクロについて教え...
-
vb.net(vs2022)のtextboxのデザ...
-
【ExcelVBA】5万行以上のデー...
-
VBA 入力箇所指定方法
-
エクセルのマクロについて教え...
-
【ExcelVBA】値を変更しながら...
-
VBA ユーザーフォーム ボタンク...
-
【マクロ】並び替えの範囲が、...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Vba Array関数について教えてく...
-
VBAでCOPYを繰り返すと、処理が...
-
【ExcelVBA】5万行以上のデー...
-
【マクロ】シートの変数へ入れ...
-
vbsでのwebフォームへの入力制限?
-
エクセルのマクロについて教え...
-
【マクロ】並び替えの範囲が、...
-
Vba セルの4辺について罫線が有...
-
【マクロ】売上一覧YYYYMMDDHHS...
-
VBAでユーザーフォームを指定回...
-
【マクロ】開いているブックの...
-
エクセルの改行について
-
vb.net(vs2022)のtextboxのデザ...
-
エクセルのVBAコードと数式につ...
-
算術演算子「¥」の意味について
-
Excelのマクロについて教えてく...
-
改行文字「vbCrLf」とは
-
ワードの図形にマクロを登録で...
-
VBAの「To」という語句について
-
【マクロ】変数を使った、文字...
おすすめ情報