『ピボットテーブルの自動作成で教えてください。』(りりちゃん☆彡) こんばんわ。ピボットテーブルで教えていただきたいです。 りりちゃん☆彡と申します。 いつもお世話になっております。 ピボットテーブルを使用して、企業ごとの集計をしたいです。 教本で自動で作成できるコードを見付けたので、 自分でアレンジして使用していますが、本当は別のシートにピボットテーブルを作成してほしいです。(今は同一シートにできてしまいます。) どう修正すれば、別のシートで作成してくれるのかどなたか教えてくださいっ。 やりたいことは、下記の通りです。 同一ブックの中に下記のような表があります。 これでピボットテーブルを作成したいです。 シート1:〇月精算額集計表 シート2:〇月の精算額計表から、作成したピボットテーブルを作成したいです。 シート1の集計表はAからEまでですが、最終的に1年間分を集計するので 毎月増えていきます。 シート1: |[A] |[B] |[C] |[D] |[E] [1]|伝票番号|企業名 |先方担当|依頼日 |ご精算額 [2]|riri001 |A株式会社|猫田 |2016/4/15|1,403,335 [3]|riri002 |B株式会社|犬先 |2016/4/25|7,553,532 [4]|riri003 |C株式会社|鳥島 |2016/4/28| 246,722 シート2: シート1から読み込んで作成したピボットテーブル。 ◎使用しているコード◎ Sub ピボットテーブル自動作成_応用2() Dim rng As Range Dim ws As Worksheet For Each ws In Worksheets Set rng = ws.Range("A5").CurrentRegion '集計表の表の始点 ActiveWorkbook.PivotCaches.Add(xlDatabase, rng) _ .CreatePivotTable ws.Range("A2") 'PVTの始まりシート2に表示してほしいです。 With ws.PivotTables(1) .PivotFields("依頼日").Orientation = xlRowField .PivotFields("企業名").Orientation = xlColumnField .PivotFields("精算額").Orientation = xlDataField End With Next End Sub お忙しい所お手数ですが、ご指導の方よろしくお願い致します。 りりちゃん☆彡 < 使用 Excel:Excel2010、使用 OS:Windows7 > ---- 回答ではありません。 ピボットは操作でも、ほとんど経験がなく、わからないことだらけですが、勉強のために アップされたレイアウトを元に、あれこれいじっています。 ところで、交通整理。(回答そのものは、他の皆さんから すぐにアップされると思います) ・元データですけど、サンプルは A1 から始まっていますよね。 でも、ほんとは A5 が基点なんですか? ・フィールドに "精算額" とあります。一方、レイアウトサンプルでは ご精算額 になってます。  これでうまくいってますか? ・結果を別シート というのは要件としてはわかります。  でも、現在のコードは、ブック内の各シートすべてに対して、それぞれピボット集計を行っていますよね。  その結果を特定の別シートに展開? 各シートの集計結果を 別シートに、それぞれどのように配置する予定ですか? ・また、その 別シートは ピボット集計の元データとしては使ってはいけないのですが、現在の構えでは  そのシート自体も元データシートとして扱われてしまいますよね?  シートを取り出すループで、そのシートが集計用別シートであれば除外するという制御が必要でしょうね。 ★いずれにしても、集計結果を別シートに展開するなら、そういった操作(ダイアログで既存のシート(E)と場所(L)で指定)  すればコード雛形は生成されると思いますよ。 (β) 2017/04/15(土) 10:51 ---- 別のシートにピボットテーブルを作成する動作をマクロ記録してみてはどうでしょうか。 手作業で他のシートに作れないのことはないと思いますが。 (γ) 2017/04/15(土) 10:53 ---- 現在使っているコード正しいのかな…と書こうとしたらすでにβさんから指摘が。 Sub ピボットテーブル自動作成_応用2() Dim rng As Range Set rng = Sheets("Sheet1").Range("A1").CurrentRegion Sheets("Sheet2").Select ActiveWorkbook.PivotCaches.Add(xlDatabase, SourceData:="Sheet1!" & rng.Address).CreatePivotTable Range("A1") With Sheets("Sheet2").PivotTables(1) .PivotFields("依頼日").Orientation = xlRowField .PivotFields("企業名").Orientation = xlColumnField .PivotFields("精算額").Orientation = xlDataField End With Set rng = Nothing End Sub (bi) 2017/04/15(土) 11:03 ---- (β)様、(γ)様、(bi)様。 こんばんわ。りりちゃんです。 この度は、お世話になっております。 昨日は外出していてご連絡できなくてすみません。 (β)様、 御無沙汰いたしております。今回もご指導いただきありがとうございます。 りりです。いつもお世話になっております。 色々ご質問とご指摘いただきありがとうございました。 スミマセンお気付きの通りです。。私の方で、書込みするときにコピペしてから、 セル番号の修正したのが間違っていました。 ごめんなさい。 あと、ご精算額という部分も間違えてました。実際には精算額としています。 ActiveWorkbook.PivotCaches.Add(xlDatabase, rng) _ .CreatePivotTable ws.Range("A2") の所は、今使っているものは K5 になってました。 あと、新規ページはC5辺りになって居ればいいかなと思います。 4つめの・の件は。。ゴメンナサイあまり考えていません。。 ありがとうございました。 また色々教えてください(*´▽`*) (γ)様、 いつもご指導いただきありがとうございます。 御無沙汰しております。りりです。 いつもお世話になっております。 修正したりしたいとき、一度マクロの記録を使ってみるという手があるんですね。 できなくて悩んでいた時でも、全然思いつかなかったです。。今度はできないとき一度記録してみるって言うやり方をやってみたいと思います。 それでわからなくなったらまたこちらでご相談したいと思います。 ありがとうございました。 また色々教えてください(*'▽') (bi)様、 初めまして。りりちゃん☆彡です。 このたびのご指導、お忙しい所ありがとうござました。 先程やってみたら無事希望通りになってました(*^^*)ありがとうございます!! とってもとっても助かります。 それにしても。。別のシートで作成させる時はこうやえばいいんですね。。。 VBA初心者で本を見ながら頑張ってはいますが、まだ全然できていないです。 今回の事もどうやればいいのかな〜?と思っては見たものの 全然思いつきもしませんでしたし。。 本の通りに頑張って、とりあえずはできては見たものの、 別シートにしたいのにな〜と提出の度に思ってました。 今度はやっと、納得いった形で提出できるんだ〜って嬉しくなりました。 (人''▽`)ありがとう☆ 色々と勉強になりました。ありがとうございました。 今後ともどうぞよろしくお願い致します。 (りりちゃん☆彡) 2017/04/16(日) 21:50