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

このQ&Aのポイント
  • エラーメッセージが出るため、Excelマクロを使用してピポットテーブルを作成する際に困っています。ご助言をお願いいたします。
  • Excelマクロを使用してピポットテーブルを作成する際にエラーメッセージが発生し、解決策が見つかりません。ご助言いただけますと幸いです。
  • ピポットテーブルを作成するためにExcelマクロを使用していますが、エラーが発生しています。どのように解決すれば良いか教えてください。
回答を見る
  • ベストアンサー

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

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

  • ベストアンサー
  • ushi2015
  • ベストアンサー率51% (241/468)
回答No.1

こんにちは あちこちに出るエラーがどこなのかハッキリした方がいいです。 取り敢えず、 Sub 名別_M() ' ' 名別_M Macro '   Range("A2").Select   On Error Resume Next   Application.DisplayAlerts = False   Sheets("名別").Delete   Application.DisplayAlerts = True   On Error GoTo 0   With Worksheets.Add() '新しいシートを作成し、名前を「名別」にする処理     .Name = "名別"     Dim NewSheetName As String     NewSheetName = InputBox("新しいシート名を入力ください")     If NewSheetName = "" Then Exit Sub     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   ActiveSheet.PivotTables("ピボットテーブル1") _     .CompactLayoutRowHeader = "UserName"   Rows("1:2").Delete Shift:=xlUp End Sub こんな感じかと思いますが、新しいシート名を指定して、新しいシート名の データでピボットを作っている部分がそれでいいのかどうかは分かりません。

chi_ko6262
質問者

お礼

有難うございます。私には想像できないような物になりました。感謝、感謝の気持ちでいっぱいです。これからも私のような馬鹿の質問に答えて頂ければ幸いです。

関連するQ&A

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

    こんばんは。マクロの自動記録を使って、ピボットテーブルを作成したのですが、記録した時のシート名とデータ範囲で記録されてしまいます。アクティブシートのデータがある範囲をピボットテーブルにしたい時は、どうすれば良いでしょうか? 以下のコードが自動記録で作成したコードです。 ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _ "シート名!R1C1:R1000C30").CreatePivotTable TableDestination:= _ "", TableName:="ピボットテーブル2", DefaultVersion:=xlPivotTableVersion10 ActiveSheet.PivotTableWizard TableDestination:=ActiveSheet.Cells(3, 1) ActiveSheet.Cells(3, 1).Select With ActiveSheet.PivotTables("ピボットテーブル2").PivotFields("商品番号") .Orientation = xlRowField .Position = 1 End With With ActiveSheet.PivotTables("ピボットテーブル2").PivotFields("商品名 ") .Orientation = xlRowField .Position = 2 End With Range("A9").Select ActiveSheet.PivotTables("ピボットテーブル2").PivotFields("商品番号").Subtotals = Array( _ False, False, False, False, False, False, False, False, False, False, False, False) ActiveSheet.PivotTables("ピボットテーブル2").AddDataField ActiveSheet.PivotTables( _ "ピボットテーブル2").PivotFields("数量 "), "データの個数 / 数量 ", xlCount With ActiveSheet.PivotTables("ピボットテーブル2").PivotFields("発送日 ") .Orientation = xlPageField .Position = 1 End With Range("A1").Select ActiveSheet.PivotTables("ピボットテーブル2").PivotFields("発送日 ").Orientation = _ xlHidden With ActiveSheet.PivotTables("ピボットテーブル2").PivotFields("希望時期") .Orientation = xlColumnField .Position = 1 End With

  • マクロ実行時にエラーが出てしまいます

    マクロを記録し、それを実行しようとしたのですが、途中で下記のようなエラーが出てしまいます。 実行時エラー '1004': PivotTableクラスのPivotFieldsプロパティを取得できません。 黄色い矢印がとまっているのは下記の箇所です。 →With ActiveSheet.PivotTables("ピボットテーブル").PivotFields("送付先")← 自分なりに調べてみたのですが、選択範囲("E2:E1288"等の箇所)が違うデータでマクロを実行するとエラーになるのだと思っているのですが、選択範囲が毎回変わるのに対応できるコードの変更の仕方が分かりません。 もしよろしければ、アドバイスを頂けませんでしょうか。 コードの全体は下記になります。 Sheets("本体").Select Range("E1").Select ActiveCell.FormulaR1C1 = "品目分け" Range("E2").Select ActiveCell.FormulaR1C1 = "=LEFT(RC[-2],1)" Range("E2").Select Selection.AutoFill Destination:=Range("E2:E1288") Range("E2:E1288").Select Sheets("計算結果").Select ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase,SourceData:= _ "本体!C1:C5").CreatePivotTable TableDestination:="[計算用.xls]計算結果!R3C1", _ TableName:="ピボットテーブル", DefaultVersion:=xlPivotTableVersion10 ActiveSheet.PivotTables("ピボットテーブル").ColumnGrand = False With ActiveSheet.PivotTables("ピボットテーブル").PivotFields("送付先") .Orientation = xlRowField .Position = 1 End With With ActiveSheet.PivotTables("ピボットテーブル").PivotFields("品目分け") .Orientation = xlColumnField .Position = 1 End With Range("E4").Select ActiveSheet.PivotTables("ピボットテーブル").AddDataField ActiveSheet.PivotTables( _"ピボットテーブル").PivotFields("数量"), "データの個数 / 数量", xlCount ActiveSheet.PivotTables("ピボットテーブル").PivotFields("データの個数/ 数量").Function = _xlSum With ActiveSheet.PivotTables("ピボットテーブル").PivotFields("品目分け") .PivotItems("(空白)").Visible = False End With Range("A1").Select End Sub

  • マクロ実行時にエラーが出てしまいます

    マクロを記録し、それを実行しようとしたのですが、途中で下記のようなエラーが出てしまいます。 実行時エラー '1004': PivotTableクラスのPivotFieldsプロパティを取得できません。 黄色い矢印がとまっているのは下記の箇所です。 →With ActiveSheet.PivotTables("ピボットテーブル").PivotFields("送付先")← 自分なりに調べてみたのですが、選択範囲("E2:E1288"等の箇所)が違うデータでマクロを実行するとエラーになるのだと思っているのですが、選択範囲が毎回変わるのに対応できるコードの変更の仕方が分かりません。 もしよろしければ、アドバイスを頂けませんでしょうか。 コードの全体は下記になります。 Sheets("本体").Select Range("E1").Select ActiveCell.FormulaR1C1 = "品目分け" Range("E2").Select ActiveCell.FormulaR1C1 = "=LEFT(RC[-2],1)" Range("E2").Select Selection.AutoFill Destination:=Range("E2:E1288") Range("E2:E1288").Select Sheets("計算結果").Select ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase,SourceData:= _ "本体!C1:C5").CreatePivotTable TableDestination:="[計算用.xls]計算結果!R3C1", _ TableName:="ピボットテーブル", DefaultVersion:=xlPivotTableVersion10 ActiveSheet.PivotTables("ピボットテーブル").ColumnGrand = False With ActiveSheet.PivotTables("ピボットテーブル").PivotFields("送付先") .Orientation = xlRowField .Position = 1 End With With ActiveSheet.PivotTables("ピボットテーブル").PivotFields("品目分け") .Orientation = xlColumnField .Position = 1 End With Range("E4").Select ActiveSheet.PivotTables("ピボットテーブル").AddDataField ActiveSheet.PivotTables( _"ピボットテーブル").PivotFields("数量"), "データの個数 / 数量", xlCount ActiveSheet.PivotTables("ピボットテーブル").PivotFields("データの個数/ 数量").Function = _xlSum With ActiveSheet.PivotTables("ピボットテーブル").PivotFields("品目分け") .PivotItems("(空白)").Visible = False End With Range("A1").Select End Sub

  • エクセルのマクロ

    一定期間内の数量と価格をチェックするために エクセルでマクロを組みましたが下記のエラーが出てしまいます。 実行時エラー ’1004’ Worksheet クラスのPivot tablesプロパティを取得できません ソースは ' ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _ "データ!R1C1:R1000C19").CreatePivotTable TableDestination:= _ "[価格.xls]ワーク1!R1:R65536", TableName:="ピボットテーブル1", DefaultVersion:= _ xlPivotTableVersion10 ActiveSheet.PivotTables("ピボットテーブル1").AddFields RowFields:=Array("商品CD", _ "データ") With ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("数量") .Orientation = xlDataField .Caption = "合計 / 数量" .Position = 1 .Function = xlSum End With With ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("単価") .Orientation = xlDataField .Caption = "最大値 / 単価" .Function = xlMax End With Range("B1").Select With ActiveSheet.PivotTables("ピボットテーブル1").DataPivotField .Orientation = xlColumnField .Position = 1 End With End Sub です。 ストップしているのは↓の部分と思われます。 ActiveSheet.PivotTables("ピボットテーブル1").AddFields RowFields:=Array("商品CD", _ "データ") どうすればエラーが回避できるでしょうか。 ご教授お願いします。

  • 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マクロでファイル名を任意指定したい

    下記のVBAでアクティブにしたいファイル名を任意に指定したり、新しく作成したシート名を任意に指定出来るようにしたいと思っています。ご助言を頂ければ幸いです。 Sub 名別_M() ' 名別_M Macro ' Cells.Select Selection.Delete Shift:=xlUp ' MsgBox "挿入する「ファイル」を選択してください" On Error Resume Next With CreateObject("WScript.Shell") .currentdirectory = ThisWorkbook.Path End With On Error GoTo 0 Workbooks.Open "C:\Users\user\Desktop\Excel\自己練習\Sample2.xlsx" '←パスとファイル名を分けてファイル名を任意で指定したい。 Workbooks("Sample2.xlsx").Activate '←上記で任意に指定したファイル名を入れたい。 Range("A1").Select On Error Resume Next Application.DisplayAlerts = False Sheets("名別").Delete Application.DisplayAlerts = True On Error GoTo 0 Dim NewSheetName As String NewSheetName = InputBox("元データのあるシート名を入力ください") If NewSheetName = "" Then Exit Sub '下記ではシート名を「名別」で固定しているが、これも任意に指定したい。 Sheets.Add ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _ "シート1!R1C1:R95C18", Version:=xlPivotTableVersion14).CreatePivotTable _ TableDestination:="Sheet1!R3C1", TableName:="ピボットテーブル2", DefaultVersion _ :=xlPivotTableVersion14 Sheets("Sheet1").Select Sheets("Sheet1").Name = "名別" Cells(3, 1).Select With ActiveSheet.PivotTables("ピボットテーブル2").PivotFields("UserName") .Orientation = xlRowField .Position = 1 End With ActiveSheet.PivotTables("ピボットテーブル2").AddDataField ActiveSheet.PivotTables( _ "ピボットテーブル2").PivotFields("作業時間"), "合計 / 作業時間", xlSum ActiveSheet.PivotTables("ピボットテーブル2").CompactLayoutRowHeader = "UserName" Rows("1:2").Select Selection.Delete Shift:=xlUp Range("C16").Select MsgBox "上書き保存します" On Error Resume Next ActiveWorkbook.Save If Err.Number > 0 Then MsgBox "保存されませんでした" End Sub

  • ピポットをマクロ登録したのですが

    ピポットをマクロに自動登録しました。ところが作動するとデバックが起きてしまいます。VBAに特別なプログラムを付け加える必要があるのでしょうか? 初心者なので勉強不足のところが多いのですが、どうかよろしくお願いします。 なお、シートは3枚で「data」「number」「answer」があり、「data」には価格の情報がないので、「number」シートからvlookupで情報を拾ってきています。ピポットは「answer」シートに作り、値の貼り付けをしてセルA1の列幅を20にしています。 Range("D1").Select ActiveCell.FormulaR1C1 = "担当"    ActiveCell.Characters(1, 2).PhoneticCharacters = "タントウ" Range("D2").Select ActiveCell.FormulaR1C1 = "=VLOOKUP(R2C1:R92C1,number!R2C1:R109C2,2,0)"   Selection.AutoFill Destination:=Range("D2:D92"), Type:=xlFillDefault Range("D2:D92").Select Selection.Copy Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Range("A2").Select Application.CutCopyMode = False ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _ "data!R1C1:R92C4").CreatePivotTable TableDestination:="[集計(1).xls]answer!R1C1" _ , TableName:="ピボットテーブル1", DefaultVersion:=xlPivotTableVersion10 With ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("性別") .Orientation = xlColumnField .Position = 1 End With With ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("商品番号") .Orientation = xlRowField .Position = 1 End With With ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("担当") .Orientation = xlRowField .Position = 1 End With ActiveSheet.PivotTables("ピボットテーブル1").PivotSelect "商品番号[All]", xlLabelOnly, _ True Range("B2").Select ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("商品番号").Orientation = _ xlHidden ActiveSheet.PivotTables("ピボットテーブル1").AddDataField ActiveSheet.PivotTables( _ "ピボットテーブル1").PivotFields("価格"), "合計 / 価格", xlSum Columns("A:A").Select Selection.ColumnWidth = 20 Cells.Select Selection.Copy Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False End Sub

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

       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 VBAの自動生成VBAでエラーが発生?

    ' ↑ 'この上にピポットテーブルを作る為のデータをSheetに生成し '下記でそのSheetに名前を付けてピポットテーブルを作成するVBA Dim wk As String wk = Application.InputBox("シート名を入力ください") If wk <> "False" Then ActiveSheet.Name = wk Else MsgBox "キャンセルされました。" Exit Sub End If Sheets.Add MsgBox "選択したシート名は" & wk & "です。" '-------------------------------------------------------------------------------------------------------------------- 'この中でエラーメッセージが出てしまっています。 'どこがいけないのでしょうか? ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _ wk & "!R1C1:R95C18", Version:=xlPivotTableVersion15).CreatePivotTable _ TableDestination:="Sheet1!R3C1", TableName:="ピボットテーブル1", DefaultVersion _ :=xlPivotTableVersion15 '------------------------------------------------------------------------------------------------------------------- Sheets("Sheet1").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 ActiveSheet.PivotTables("ピボットテーブル1").CompactLayoutRowHeader = "UserName" Rows("1:2").Select Selection.Delete Shift:=xlUp Range("C16").Select Sheets("Sheet1").Select Sheets("Sheet1").Name = "名別"

  • ご質問です。素人です。お願いします。

    ピボットテーブルを作ったマクロで、新規ワークシートに作成する文はどこですかね?教えて下さい。 Sub 担当者名別売上() ' ' 担当者名別売上 Macro ' マクロ記録日 : 2008/2/25 ユーザー名 : aaaaaa ' ' 集計 = MsgBox("担当者別に売上の降順にしますか?", vbYesNo) If 集計 = vbYes Then ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _ "売上データ!R1C1:R255C6").CreatePivotTable TableDestination:="", TableName:= _ "ピボットテーブル2", DefaultVersion:=xlPivotTableVersion10 ActiveSheet.PivotTableWizard TableDestination:=ActiveSheet.Cells(3, 1) ActiveSheet.Cells(3, 1).Select With ActiveSheet.PivotTables("ピボットテーブル2").PivotFields("担当者名") .Orientation = xlRowField .Position = 1 End With ActiveSheet.PivotTables("ピボットテーブル2").AddDataField ActiveSheet.PivotTables( _ "ピボットテーブル2").PivotFields("売上額"), "合計 / 売上額", xlSum Range("B5").Select Selection.Sort Key1:="R5C2", Order1:=xlDescending, Type:=xlSortValues, _ OrderCustom:=1, Orientation:=xlTopToBottom, SortMethod:=xlPinYin Range("B5").Select Sheets("売上データ").Select Range("A1").Select End If End Sub

専門家に質問してみよう