[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『マクロでピボットテーブルを作りたいです。』(あらいぐま)
お世話になります。
マクロでピボットテーブルを作りたいです。
マクロの記録をして、実行しても「実行時エラー」になってしまいます。
やりたいことは以下です。
1.データの入っている左に新しいシートを追加してピボットテーブルを作りたいです。
2.行ラベルにF列
3.値にG列をデータの個数
4.値に(3の下)G列の合計
5.列ラベルにシグマ(?)ができたのを行ラベルの2の上に移動
※データ数(行数)は実行する時によって異なります。
他に必要な情報などありましたら、教えて下さい。
いつも手作業でやっているので、マクロでできたら嬉しいです。
どうぞよろしくお願いいたします。
< 使用 Excel:Excel2007、使用 OS:Windows7 >
列の名前は以下です。
・F列:地区
・G列:個数
よろしくお願いいたします。
(あらいぐま) 2019/01/26(土) 21:14
(1)
どのようなコードが記録され、どの部分で発生しどのような実行時エラー(エラーコード&エラーメッセージ)になっているのか説明があるとアドバイスできることがあるかもしれません。
(2)
なんとなくですけど、ゼロからピボットテーブルを作成するよりは、更新したほうが楽そうな気がしますけど、どうしてもマクロでゼロから作り上げる必要があるんですか?
(どうしてもシートを追加してそこに作らないとダメなんでしょうか?)
(もこな2) 2019/01/26(土) 21:55
みたいなのが何パターンか業務としてあるのではないでしょうか。
と勝手に想像してます^^; (実際私がそうなのです)
「いつものピボットテーブル」みたいなボタンが欲しいなぁ、と。
そんな趣旨ではないでしょうか?
(白茶) 2019/01/26(土) 22:37
ありがとうございます。
(1)記録させたマクロは以下で
★を付けたところで
実行時エラー '5'
プロシージャーの呼び出し、または引数が不正です。
と言うエラーになってしまいます。
この部分で記録させたマクロは
TableDestination:="Sheet5 となっているのですが
マクロで実行したらsheet6ができてしまっています。
これが原因なのかな?と思ってみていたのですが、
どう修正していいのかわからず・・、です。
すみません、よろしくお願いいたします。
============================================
Option Explicit
Sub Macro1()
'
' Macro1 Macro
'
'
Sheets.Add ★ ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _ "Sheet1!R1C1:R13C7", Version:=xlPivotTableVersion12).CreatePivotTable _ TableDestination:="Sheet5!R3C1", TableName:="ピボットテーブル1", DefaultVersion _ :=xlPivotTableVersion12 Sheets("Sheet5").Select Cells(3, 1).Select With ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("地区") .Orientation = xlRowField .Position = 1 End With ActiveSheet.PivotTables("ピボットテーブル1").AddDataField ActiveSheet.PivotTables( _ "ピボットテーブル1").PivotFields("個数"), "データの個数 / 個数", xlCount ActiveSheet.PivotTables("ピボットテーブル1").AddDataField ActiveSheet.PivotTables( _ "ピボットテーブル1").PivotFields("個数"), "データの個数 / 個数2", xlCount With ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("データの個数 / 個数2") .Caption = "合計 / 個数2" .Function = xlSum End With With ActiveSheet.PivotTables("ピボットテーブル1").DataPivotField .Orientation = xlRowField .Position = 1 End With End Sub ============================================
(2)白茶さんが書いて下さっている通りで、
毎回ファイルが新たにできてそのファイルにピボットテーブルを作りたいんです。
よろしくお願いいたします。
(あらいぐま) 2019/01/26(土) 23:10
フォローありがとうございます。
私のやりたいこと、白茶さんの言われていることと同じだと思います。
マクロは記録させて少し手を加えて動かすくらいしかできなくて、
今回ピボットテーブルをマクロにしようとしたら、
うまく行かなくて困っているんです。
以前にもピボットテーブルをマクロにしようとしたけど、
挫折したことがあり、今回は何とか作りあげたいです。
よろしくお願いいたします。
(あらいぐま) 2019/01/26(土) 23:13
よくあるパターンとしては、テーブル名が衝突する場合でしょうか。
ex
(1) マクロの記録をして TableName:="ピボットテーブル1" が作成される
(2) 記録を実行しようとしても、同じ名前のピボットは既にあるのでエラーとなる
上記の対策
A 既存のピボットテーブルの名前を変える
B 新規作成するピボットテーブルの名前を既存以外のものとする
でしょうか。
(チオチモリン) 2019/01/26(土) 23:22
ありがとうございます。
ピボットテーブルのあるシートは削除してから、マクロを実行してるので、
テーブル名が衝突してるのではないようなんです。
そして、いろいろやってたら動くようになりました!
(あらいぐま) 2019/01/27(日) 00:01
アドバイスありがとうございました。
いろいろ試していたところ、
一番初めの
Sheets.Add
の直後に
ActiveSheet.Name = "bbb"
として、シートに名前を付けて
そのシートにピボットテーブルを作るようにしたら
うまく動いているようです。
これでもう少し試してみようと思います。
ありがとうございました。
(あらいぐま) 2019/01/27(日) 00:06
それでも、毎回ピボットを作成しなくてよいのでは?
元データ、ピボットとも同じフォーマットなら
雛形のブック(過去に作ったものを転用できます)を用意すれば、
1)新規シート追加
2)雛形のピボットを1)のシートにコピー
3)データソースの範囲を再設定
でできそうです。
手作業でもよいし、マクロだとしても簡単になります。
(マナ) 2019/01/27(日) 13:21
あぁ私が(2)で言いたかったことはそれです。
どうしてもシートを追加したいならば、シートごとひな形をコピーして更新すればいいんじゃないかな〜と・・・
(もこな2) 2019/01/27(日) 13:36
ピボットテーブルもコピーできるんですね。
気が付かなかったです。
コピーしてデータソースの範囲を再設定、
これなら手作業でも楽にできると思います。
ありがとうございました。
昨日、皆さんにいろいろ教えてもらって
マクロを書き換えて実行してみたところ、
ピボットテーブルを作ることができたので
嬉しかったです。
(今まで何度も挫折してたので余計に!)
(あらいぐま) 2019/01/27(日) 18:41
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.