マクロでピポットテーブル更新の方法

このQ&Aのポイント
  • Excelのピポットテーブルをマクロで繰り返し動作させる方法について教えてください。
  • 具体的なマクロのコードを示していますが、データエリアが変更された場合にエラーが出てしまいます。
  • どこが間違っているのか、正しいコードを教えていただけますか?
回答を見る
  • ベストアンサー

マクロでピポットテーブル更新

excel2010 excelのピポットテーブルをマクロで繰り返し動作させる方法で教えてください。 Sheets.Add ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _ "R1C1:R2424C3", Version:=xlPivotTableVersion14).CreatePivotTable _ TableDestination:="", TableName:="ActiveSheet.Name", DefaultVersion _ :=xlPivotTableVersion14 上記、内容だと連続でピポットテーブル作成可能です。 データエリアが変更になった場合、R2424C3部分の範囲が変わるので、下記の様に変更しました。 Sheets.Add ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _ "R1C1:R" & Cells(Rows.Count, "C").End(xlUp).Row & "C3", Version:=xlPivotTableVersion14).CreatePivotTable _ TableDestination:="", TableName:="ActiveSheet.Name", DefaultVersion _ :=xlPivotTableVersion14 上記マクロ実行すると、 実行時エラー'1004' このコマンドにはデータソースが2行以上必要です。 選択したセル範囲が1行だけの場合は、このコマンドを実行できません。 次のいずれかの操作を行ってください。 以下省略 と表示されます。 A1からC列でデータが存在する最終行までを指定しているつもりなのですが、 どこがNGなのか教えていただきたく。

質問者が選んだベストアンサー

  • ベストアンサー
  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.1

シートを指定していないため,その前段でsheets.addした空シートで最終行を求めようとしています。 またソースのデータシート指定もされていません。 変更前: SourceData:="R1C1:R" & Cells(Rows.Count, "C").End(xlUp).Row & "C3" 変更後: SourceData:="元データのシート名!R1C1:R" & worksheets("元データのシート名").Cells(Rows.Count, "C").End(xlUp).Row & "C3"

3620313
質問者

お礼

ありがとうございました。助かりました。

関連するQ&A

  • マクロでピボットテーブル作成

    EXCEL2007を使っています。 シートに、データベースからの抽出データを貼り付けて、実行したら、 自動的にピポッドテーブルで特定の表を別シート(シート2)に出すといったものをマクロで作成したいと思います。 (VBAはまだよく分かりません) マクロでやってみると、どうしても下記の表記(この部分が全文黄色になる)のところで止まってしまいます。 何がまずいのでしょうか? ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _ "Sheet1!R1C1:R71C23", Version:=xlPivotTableVersion12).CreatePivotTable _ TableDestination:="Sheet2!R1C1", TableName:="ピボットテーブル1", DefaultVersion _ :=xlPivotTableVersion12 地味にVBAを勉強する意欲はありますが、これを理解するところにたどり着くまでまだしばらくかかりそうなので。 よろしくおねがいいたします。

  • Excel、マクロで、ピボットテーブルでの範囲のコーディングの仕方について

    マクロで、ピボットテーブルでの範囲のコーディングの仕方について、どなたかどうぞ教えてください。 列はM列までで固定です。 行が毎回異なります。 どのようにしたら、毎回異なる範囲を、「SourceData:=」に反映させることが出来ますか? マクロ初心者ですが、なんとか作業効率をUPさせたいと思っています。 どうぞよろしくお願い致します。 尚、今のマクロは絶対参照になっています。 自動作成されたVBAは以下の通りです。 ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _ "A1:M5372").CreatePivotTable TableDestination:="", TableName:= _ "ピボットテーブル2", DefaultVersion:=xlPivotTableVersion10 ActiveSheet.PivotTableWizard TableDestination:=ActiveSheet.Cells(3, 1) ActiveSheet.Cells(3, 1).Select

  • マクロでピポットテーブル うまくいかない

    エクセル2007で、ある社内基幹データからとってきたデータを、エクセルシート(sheet1)に貼り付けて、その表からマクロでピボットテーブルを作成し(sheet2か)、簡単な担当者と仕事場所のリスト表を作るといったものを作成しました。 とりあえず、うまく動くのですが、 時々うまくいきません。別のPCでやった場合など。 うまくいかないケースの、原因がよく分かりません。 以下のようなエラーがでまして、黄色の部分が下のものになります 実行時のエラー1004 そのピボットテーブルのフィールド名は正しくありません。ピボットテーブルレポートを作成するには、ラベルの付いた列でリストとして編成されたデータを使用する必要があります。ピポットテーブルのフィールド名を変更する場合は、フィールドの新しい名前を入力する必要があります。 (以下、問題があるとしてデバッグが求められる部分) ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _ "Sheet1!R1C1:R71C23", Version:=xlPivotTableVersion12).CreatePivotTable _ TableDestination:="Sheet2!R1C1", TableName:="ピボットテーブル2", DefaultVersion _ :=xlPivotTableVersion12 まだ初心者で、上記よく分かりませんので、何が問題なのか、ヒントなどいただけるとありがたいです。

  • Excelマクロで変数を文字列として代入したい

    excelでピボットテーブルを作成する前段階で参照シート名を変数に入れそれを式に入れたいのですが、どの様な式にしたら良いでしょうか? 何卒、宜しくお願い致します。 Dim NewSheetName As String NewSheetName = InputBox("参照データのあるシート名を入力ください") If NewSheetName = "" Then Exit Sub Sheets.Add MsgBox "選択したシート名は" & NewSheetName & "です。" ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _    'ここの変数     ' ↓ "NewSheetName!R1C1:R95C18",Version:=xlPivotTableVersion15).CreatePivotTable _ TableDestination:="Sheet1!R3C1", TableName:="ピボットテーブル2", DefaultVersion _ :=xlPivotTableVersion15 Sheets("Sheet1").Select

  • ピポットテーブルのマクロについて

       A列 1  果物 2  りんご 3  みかん 4  みかん 5  りんご 6  メロン 7  メロン 8  ぶどう 9  りんご 10 みかん 11 りんご     |     | 以下名称が続きます ExcelのSheet1にある上記のようなデータを、Sheet2のA1に対して下記のような形式で 出力するのをマクロ化したいと考えております。 果物   集計 ぶどう  1 みかん  3 メロン  2 りんご  4 総計  10 通常通りピポットテーブルを行うのをマクロで記録した場合に、 下記のようになりますが、上手く実行できません。 Sub Macro4() Columns("A:A").Select ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _ "Sheet1!C1").CreatePivotTable TableDestination:="[Book1.xls]Sheet2!R1C1", _ TableName:="ピボットテーブル3", DefaultVersion:=xlPivotTableVersion10 With ActiveSheet.PivotTables("ピボットテーブル3").PivotFields("果物") .Orientation = xlRowField .Position = 1 End With ActiveSheet.PivotTables("ピボットテーブル3").AddDataField ActiveSheet.PivotTables( _ "ピボットテーブル3").PivotFields("果物"), "データの個数 / 果物", xlCount Range("D6").Select End Sub 列の名称は“果物”以外でも実行でき、A列の全てのデータをピポットテーブルで 集計できるようにしたいのですが、初心者のためなかなか上手く実行できません。 どなたか教えていただけますと幸いです。

  • Excel マクロ ピボットテーブル範囲選択

    マクロで、ピボットテーブルでの範囲のコーディングの仕方について、どなたかどうぞ教えてください。 列・行とも行が毎回異なります。 どのようにしたら、毎回異なる範囲を、「SourceData:=」に反映させることが出来ますか? マクロ初心者ですが、なんとか作業効率をUPさせたいと思っています。 どうぞよろしくお願い致します。 自動作成されたVBAは以下の通りです。 ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _ "Sheet1!R3C2:R1767C52").CreatePivotTable TableDestination:="", TableName:= _ "ピボットテーブル1" ActiveSheet.PivotTableWizard TableDestination:=ActiveSheet.Cells(3, 1) ActiveSheet.Cells(3, 1).Select ActiveSheet.PivotTables("ピボットテーブル1").SmallGrid = False

  • Excel VBA:

    A1~AB11542 (先頭はタイトル行) の表をマクロでピボットテーブルを作りたいです。データを追加して範囲が変わっても、ピボットテーブルの範囲が変わってくれません。下記のマクロの意味が分からないのですが、どう修正すればいいのでしょうか。お願いします。 Range("A1").Select Selection.CurrentRegion.Select ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _ "'200804~累計'!R1C1:R10501C28").CreatePivotTable TableDestination:="", _ TableName:="ピボットテーブル1", DefaultVersion:=xlPivotTableVersion10 ActiveSheet.PivotTableWizard TableDestination:=ActiveSheet.Cells(3, 1) ActiveSheet.Cells(3, 1).Select ActiveWorkbook.ShowPivotTableFieldList = True With ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("仕入先名称") .Orientation = xlRowField .Position = 1 End With With ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("仕入検収月") .Orientation = xlColumnField .Position = 1 End With ActiveSheet.PivotTables("ピボットテーブル1").AddDataField ActiveSheet.PivotTables( _ "ピボットテーブル1").PivotFields("合価"), "合計 / 合価", xlSum ActiveSheet.Name = "月別集計" ActiveWorkbook.ShowPivotTableFieldList = False

  • Excelマクロでピポットテーブルを作りたい

    マクロを使ってピポットテーブルを作ろうとしていますが、エラーメッセージがあちこちに出てしまい何が悪いのかわかりません。どうかご助言の程、何卒よろしくお願い申し上げます。 Sub 名別_M() ' ' 名別_M Macro ' Range("A2").Select With Worksheets.Add() '新しいシートを作成し、名前を「名別」にする処理 .Name = "名別" Dim NewSheetName As String NewSheetName = InputBox("新しいシート名を入力ください") ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _ NewSheetName!R1C1:R95C18,Version:=xlPivotTableVersion15). CreatePivotTable TableDestination:="名別!R3C1", TableName:="ピボットテーブル1" _ , DefaultVersion:=xlPivotTableVersion15 End With '「名別」にした最後の処理 Sheets("名別").Select Cells(3, 1).Select With ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("UserName") .Orientation = xlRowField .Position = 1 End With ActiveSheet.PivotTables("ピボットテーブル1").AddDataField ActiveSheet.PivotTables( _ "ピボットテーブル1").PivotFields("作業時間"), "合計 / 作業時間", xlSum Range("A3").Select ActiveSheet.PivotTables("ピボットテーブル1").CompactLayoutRowHeader = "UerName" Rows("1:2").Select Selection.Delete Shift:=xlUp Range("E26").Select End Sub

  • マクロでピボットテーブルを作成

    マクロでピボットテーブを作成したいのですが、範囲指定がうまくいきません。 Workbooks.Open Filename:="C:\出庫実績.csv" Range(Selection, Selection.End(xlDown)).Select Range(Selection, Selection.End(xlToRight)).Select ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _ "出庫実績!R1C1:R458C24").CreatePivotTable TableDestination:="", TableName:= _ "ピボットテーブル1", DefaultVersion:=xlPivotTableVersion10 ActiveSheet.PivotTableWizard TableDestination:=ActiveSheet.Cells(3, 1) ActiveSheet.Cells(3, 1).Select ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("店舗名称").Subtotals = Array( _ False, False, False, False, False, False, False, False, False, False, False, False) ActiveSheet.PivotTables("ピボットテーブル1").AddFields RowFields:="店舗名称" ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("出庫数ケース").Orientation = _ xlDataField 出庫実績csvのデータは日々変わる為、範囲の選択がうまくいかず、ピボットテーブルの合計数が合いません。よろしくお願いします。

  • ピボットテーブル最終行から2行目に項目を入れて3行目から新しいピボットテーブルを貼り付けたい。

    エクセルのマクロで、ピボットテーブルを2つ作成しています。 それを集計表シートに貼り付けています。 「A1」に「ピボットテーブル1」の名前を入れて 1つ目のピボットテーブルの範囲が「A2:G10」の場合 11行目は空欄 「A12」に「ピボットテーブル2」の名前 「A13(:D20など)」ピボットテーブル2 というようにピボットテーブルを貼り付けていきたいのですが、 良い方法はありませんか? 現在は2つ目のピボットテーブルを「A25」に貼り付けるように 設定していますが、1つ目のピボットテーブルの大きさが毎回 変化するので、見た目がきれいではありません。 2つ目のピボットテーブルを貼り付ける部分のVBAを記入しておきます。 「貼り付け」シートのデータを元にピボットテーブルを作成しています。 ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _ "貼り付け!R2C15:R300C19", Version:=xlPivotTableVersion12).CreatePivotTable _ TableDestination:="集計表!R25C1", TableName:="ピボットテーブル13", DefaultVersion _ :=xlPivotTableVersion12 Sheets("集計表").Select Cells(25, 1).Select

専門家に質問してみよう