• ベストアンサー

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

ピポットをマクロに自動登録しました。ところが作動するとデバックが起きてしまいます。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

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

  • ベストアンサー
  • OtenkiAme
  • ベストアンサー率77% (69/89)
回答No.3

こんにちは。 作った集計表を数値化していますが、 TableName:="ピボットテーブル1" のピボットテーブルが存在するとか、TableDestination:="[集計(1).xls]answer!R1C1"のブック名が異なっているとか、確認してみてください。 省略できる引数もあるので、ヘルプファイルを活用して、分からないコードは調べるクセをつけるといいですよ。 作成先のシートを指定している場合は、 一旦、シートのセルをクリアしてから作成するのが常套手段だと思います。 また、複数のピボットテーブルを操作するのでなければ、 名前を省略して、INDEXで指定してあげると処理がすっきりします。 また、ピボットテーブルの作成は、手作業での手順が把握できたら、 ウィザード3/3のレイアウトで組むようにするといいです。 ワークシートで組むのと違ってすっきりしたコードが書けます。 記録したコードの編集ですが、 ほとんど場合、□.Select、Selection.△と続く処理は、□.△というようにつないで書くことができます。画面のちらつきもなくなりますし、 処理が早くなります。ぜひコードの編集にチャレンジしてください。 下に、サンプルを掲示しますので、F8でステップ実行しながら、 murasakishさんの処理の参考にしてみてください。 Sub 例えば() With Worksheets("data")   .Range("D1").Value = "担当"   With .Range("D2")     .FormulaR1C1 = "=VLOOKUP(R2C1,number!R2C1:R109C2,2,0)"     .AutoFill Destination:=.Parent.Range("D2:D92"), Type:=xlFillDefault   End With   With .Range("D2:D92")     .Copy     .PasteSpecial Paste:=xlPasteValues, _       Operation:=xlNone, SkipBlanks:=False, Transpose:=False   End With   Application.Goto Reference:=.Range("A2") End With Worksheets("answer").Cells.Clear ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, _   SourceData:=Worksheets("data").Range("A1").CurrentRegion.Address(External:=True)) _   .CreatePivotTable TableDestination:=Worksheets("answer").Range("A1") With Worksheets("answer")   .Activate   With .PivotTables(1)     .PivotFields("商品番号").Subtotals(1) = False     .AddFields RowFields:=Array("商品番号", "担当"), ColumnFields:="性別"     .PivotFields("価格").Orientation = xlDataField     With .TableRange1       .Copy       .PasteSpecial Paste:=xlPasteValues, _         Operation:=xlNone, SkipBlanks:=False, Transpose:=False       Application.CutCopyMode = False       .Interior.ColorIndex = xlNone       Application.Goto Reference:=.Range("A1")     End With   End With   .Columns("A:A").ColumnWidth = 20 End With End Sub

murasakish
質問者

お礼

ご丁寧にありがとうございます。参考にさせていただいたら動くようになりました。F8でのステップ実行、これから習慣にします。

その他の回答 (2)

  • KenKen_SP
  • ベストアンサー率62% (785/1258)
回答No.2

エラーの内容(エラー番号、メッセージ)とか、状況(例えば1回目は 上手くいくのに2回目は失敗するとか)の説明がないと回答側にはエラー の原因がつかめません。 なぜなら、コードには問題がなく、シート上のデータ側に問題があるなど コード上では読み取れない原因があるのかもしれないからです。 そのため、少なくともこのような情報の提供が必要なのです。 で、気になる点を。 > [集計(1).xls]answer!R1C1 という表記はおかしくないですか?単に answer!R1C1 にしてみたら?

murasakish
質問者

お礼

自動記録で作ったので可笑しいところには気がつきませんでした。これでも実行されましたので、ここが原因ではなかったようですが…。今後のこともありますので覚えるようにします。ありがとうございました。

  • KenKen_SP
  • ベストアンサー率62% (785/1258)
回答No.1

> ところが作動するとデバックが起きてしまいます。 どの行でエラーになるのかを書かないと。。それから、どのような状況で エラーになるのかの説明、Excel や OS のバージョン等も書かないと。。 試してないけど、とりあえず気づいた部分です。 ■ [追加] 1行目にシートのアクティブ化コード Range("D1").Select ActiveCell.FormulaR1C1 = "担当"    ↓ Worksheets("data").Activate Range("D1").Select ActiveCell.FormulaR1C1 = "担当" ■ [修正]VLOOKUP 関数の第一引数がヘン ActiveCell.FormulaR1C1 = "=VLOOKUP(R2C1:R92C1,number!R2C1:R109C2,2,0)"    ↓ ActiveCell.FormulaR1C1 = "=VLOOKUP(R2C1,number!R2C1:R109C2,2,0)" ■ [追加] シートのアクティブ化コード With ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("性別") ↓ Worksheets("answer").Activate With ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("性別")

murasakish
質問者

補足

Excel2003です。失礼しました。VBA用に書き直しました。デバックが起きるのは※の部分です。 Dim L As Integer Worksheets("data").Activate Range("D1").Select ActiveCell.FormulaR1C1 = "担当" Range("D2").Select ActiveCell.FormulaR1C1 = "=VLOOKUP(R2C1,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 Sheets("answer").Select Range("A1").Select Worksheets("answer").Activate ※ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _ "data!R1C1:R92C4").CreatePivotTable TableDestination:="[集計(1).xls]answer!R1C1" _ , TableName:="ピボットテーブル1", DefaultVersion:=xlPivotTableVersion10 With ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("性別") Worksheets("answer").Activate .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:D").Select Selection.Copy Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Range("A21").Select End Sub よろしくお願いします。

関連するQ&A

  • マクロ登録したピボットが重いのです

    以前、http://oshiete1.goo.ne.jp/qa3362330.html を質問させていただいた者です。 同じくエクセル2003で、ピボットを作りました。VBAで、 Selection.End(xlDown).Select N = Selection.Row を登録し、下記のプログラムを作ったところ、★の部分で再計算が始まり、終了まで非常に時間がかかってしまいます(1分程)。マクロは作動しますので、時間がかからないようにする方法はあるでしょうか。よろしくお願いします。 Sheets("data").Select Range("D1").Select ActiveCell.FormulaR1C1 = "担当" Selection.End(xlDown).Select N = Selection.Row ActiveCell.FormulaR1C1 = "=VLOOKUP(RC[-3],number!C[-3]:C[-2],2,0)" Selection.AutoFill Destination:=Range("D2:D" & N) Range("D2:D" & N).Select Selection.Copy ★ Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Application.CutCopyMode = False Sheets("answer").Select Range("A1").Select ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _ "data!R1C1:R" & N & "C4").CreatePivotTable TableDestination:="[集計(1).xls]answer!R1C1", _ TableName:="ピボットテーブル1", DefaultVersion:=xlPivotTableVersion10 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 Columns("A:A").ColumnWidth = 30 Cells.Select Selection.Copy Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False 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': 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

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

    こんばんは。マクロの自動記録を使って、ピボットテーブルを作成したのですが、記録した時のシート名とデータ範囲で記録されてしまいます。アクティブシートのデータがある範囲をピボットテーブルにしたい時は、どうすれば良いでしょうか? 以下のコードが自動記録で作成したコードです。 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

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

    マクロでピボットテーブを作成したいのですが、範囲指定がうまくいきません。 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のデータは日々変わる為、範囲の選択がうまくいかず、ピボットテーブルの合計数が合いません。よろしくお願いします。

  • ピボットテーブルのマクロでシートを指定、連続

    過去問?も確認しましたが、うまく行きません。 マクロの自動記録で作成し、TableDestination:=Sheets("Sheet1").Range("A1"),、と変更しましたが、 With ActiveSheet.PivotTables("ピボットテーブル1")のところで止まってしまいます。また、最後の行の Application.Run "'Pivot for 東京.xls'!Macro3"は、正しい記述でしょうか?  よろしくお願いします。 Workbooks.Open Filename:= _ "C:\Documents and Settings\ \デスクトップ\Access DB\Pivot for 東京.xls" Sheets("DSG").Select Columns("A:AZ").Select Range("Q1").Activate Selection.Delete Shift:=xlToLeft Range("A1").Select Sheets("GSG").Select Columns("A:AZ").Select Range("P1").Activate Selection.Delete Shift:=xlToLeft Range("A1").Select Sheets("ダート").Select Columns("A:AZ").Select Range("W1").Activate Selection.Delete Shift:=xlToLeft Range("A1").Select Sheets("芝").Select Columns("A:AZ").Select Range("AQ1").Activate Selection.Delete Shift:=xlToLeft Range("A1").Select Windows("Pivot01.xls").Activate Sheets("G").Select Range("E1").Select Range(Selection, Selection.End(xlDown)).Select Range(Selection, Selection.End(xlToRight)).Select ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _ "G!R1C5:R8594C11").CreatePivotTable TableDestination:=Sheets("Sheet1").Range("A1"), TableName _ :="ピボットテーブル1" With ActiveSheet.PivotTables("ピボットテーブル1")  '------------>ここで止まります .NullString = "0" .SmallGrid = False End With ActiveSheet.PivotTables("ピボットテーブル1").AddFields RowFields:="騎手名", _ ColumnFields:=Array("距離", "着順") With ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("着順") .Orientation = xlDataField .Caption = "データの個数 : 着順" .Function = xlCount End With Application.CommandBars("PivotTable").Visible = False Windows("Pivot01.xls").Activate Sheets("1").Select Columns("A:DD").Select Selection.Delete Shift:=xlToLeft Sheets("D").Select Range("E1").Select Range(Selection, Selection.End(xlDown)).Select Range(Selection, Selection.End(xlToRight)).Select ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _ "D!R1C5:R9508C11").CreatePivotTable TableDestination:=Sheets("Sheet1").Range("A1"), TableName _ :="ピボットテーブル2" ActiveSheet.PivotTables("ピボットテーブル2").SmallGrid = False ActiveSheet.PivotTables("ピボットテーブル2").AddFields RowFields:="騎手名", _ ColumnFields:=Array("距離", "着順") With ActiveSheet.PivotTables("ピボットテーブル2").PivotFields("着順") .Orientation = xlDataField .Caption = "データの個数 : 着順" .Function = xlCount End With Application.CommandBars("PivotTable").Visible = False Windows("Pivot01.xls").Activate Sheets("1").Select Columns("A:DD").Select Selection.Delete Shift:=xlToLeft Sheets("GSG").Select Range("E1").Select Range(Selection, Selection.End(xlDown)).Select Range(Selection, Selection.End(xlToRight)).Select ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _ "GSG!R1C5:R81C11").CreatePivotTable TableDestination:=Sheets("Sheet1").Range("A1"), TableName _ :="ピボットテーブル3" With ActiveSheet.PivotTables("ピボットテーブル3") .NullString = "0" .SmallGrid = False End With ActiveSheet.PivotTables("ピボットテーブル3").AddFields RowFields:="騎手名", _ ColumnFields:="着順" With ActiveSheet.PivotTables("ピボットテーブル3").PivotFields("着順") .Orientation = xlDataField .Caption = "データの個数 : 着順" .Function = xlCount End With Application.CommandBars("PivotTable").Visible = False Windows("Pivot01.xls").Activate Application.Run "'Pivot for 東京.xls'!Macro3" End Sub

  • 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

  • ピボットテーブルの範囲を可変にしたい

    ピボットテーブルのマクロを作っています。 「発注データ」というシートの隣に新しいシートを追加し そこにピボットテーブルを作成するという内容です。 シート名の「発注データ~」と参照範囲「R1C1:R477C8」の部分が毎回変わるため (列は固定で行数が増減)それに対応した記述にしたいのですが どのように変えたらいいのでしょうか? アドバイスよろしくお願いします。 以下マクロ記録で作成してみました。 Sub pivot() ' pivot Macro Sheets.Add ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _ "発注データ20170202!R1C1:R477C8", Version:=xlPivotTableVersion15). _ CreatePivotTable TableDestination:="Sheet1!R3C1", TableName:="ピボットテーブル1" _ , DefaultVersion:=xlPivotTableVersion15 Sheets("Sheet1").Select Cells(3, 1).Select 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 = 2 End With With ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("製品名1") .Orientation = xlRowField .Position = 3 End With With ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("製品名2") .Orientation = xlRowField .Position = 4 End With With ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("棚番号") .Orientation = xlRowField .Position = 5 End With With ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("単価") .Orientation = xlRowField .Position = 6 End With ActiveSheet.PivotTables("ピボットテーブル1").AddDataField ActiveSheet.PivotTables( _ "ピボットテーブル1").PivotFields("数量"), "合計 / 数量", xlSum ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("品番").Subtotals = Array( _ False, False, False, False, False, False, False, False, False, False, False, False) ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("製品コード").Subtotals = Array _ (False, False, False, False, False, False, False, False, False, False, False, False) ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("製品名1").Subtotals = Array( _ False, False, False, False, False, False, False, False, False, False, False, False) ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("製品名2").Subtotals = Array( _ False, False, False, False, False, False, False, False, False, False, False, False) ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("箱番").Subtotals = Array( _ False, False, False, False, False, False, False, False, False, False, False, False) ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("単価").Subtotals = Array( _ False, False, False, False, False, False, False, False, False, False, False, False) ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("数量").Subtotals = Array( _ False, False, False, False, False, False, False, False, False, False, False, False) ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("課").Subtotals = Array( _ False, False, False, False, False, False, False, False, False, False, False, False) ActiveSheet.PivotTables("ピボットテーブル1").RowAxisLayout xlTabularRow End Sub

  • 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

  • エクセルのマクロ

    一定期間内の数量と価格をチェックするために エクセルでマクロを組みましたが下記のエラーが出てしまいます。 実行時エラー ’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", _ "データ") どうすればエラーが回避できるでしょうか。 ご教授お願いします。

専門家に質問してみよう