• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:EXCELマクロ ピボットテーブルで平均値)

EXCELマクロ ピボットテーブルで平均値

このQ&Aのポイント
  • EXCELマクロを使用して、可変する行数で名前別の平均値を出す方法について教えてください。
  • ネット検索の結果、合計値を出すマクロはありますが、平均値を出す方法がわかりません。
  • また、CreatePivotTable(TableDestination:=Range("A3"))のA3の意味についても教えていただきたいです。

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

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

>(2)で進めたいので、(2)のみで結構です。御教示お願いします。 おっとゴメンナサイね。思いつきでチョコちょこっと書き足したところが誤記だったようです。 誤: pvt.pivotfields(1).function = xlaverage 訂正: pvt.datafields(1).function = xlaverage 失礼しました。

Siam0710
質問者

お礼

ありがとうございました。 バッチリ作動しました。 本当にありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (2)

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

こちらとしてもすっきり解決さっさと終わりたいところですが、ご質問は? >試行錯誤で最初の記述になりました。 >これでよいものかどうか? いま動いてるのでしたら、それでいいですけど? 何がどのように上手く動かないのですか? 補足のご質問でいま何が聞きたいのかも、いま現在の最新の状況も、いずれも不明瞭で、もうしわけありませんが「回答」できません。

Siam0710
質問者

補足

御迷惑をお掛けします。 (1) ....... With pvt .PivotFields("名前").Orientation = xlRowField .PivotFields("点数").Orientation = xlDataField pvt.PivotFields("合計 / 点数").Function = xlAverage pvt.PivotFields("合計 / 点数").Caption = "平均点数" End With の場合、         実行時エラー1004      PivotTableクラスのPivotFieldsプロパティを取得できません。     エラー部→ pvt.PivotFields("合計 / 点数").Caption = "平均点数" (2) ....... With pvt .PivotFields("名前").Orientation = xlRowField .PivotFields("点数").Orientation = xlDataField pvt.pivotfields(1).function = xlaverage End With  End Sub の場合、     実行時エラー1004     PivotFieldsクラスのFunctionプロパティを設定できません。     エラー部→ pvt.PivotFields(1).Function = xlAverage となります。 (2)で進めたいので、(2)のみで結構です。御教示お願いします。

全文を見る
すると、全ての回答が全文表示されます。
  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.1

>With pvt >.PivotFields("名前").Orientation = xlRowField >.PivotFields("点数").Orientation = xlDataField >End With この部分で、作成したピボットテーブルレポートの具体的な中身を操作しています。 ご相談のマクロでわざわざ消して掲示された範囲で他に何か違う事をしているかもしれないので、回答のマクロそのままでは動かない可能性があることに留意してください。 ケース1: ふつーピボットテーブルレポートで、点数をデータに配置すると「"合計 / 点数"」という名前が自動的に付きます。 これを(マクロで・手動で)「変更していない」場合は pvt.pivotfields("合計 / 点数").function = xlaverage pvt.pivotfields("合計 / 点数").caption = "平均点数" のように設定すればOKです。 ケース2: 作成したピボットテーブルレポートのデータ領域に「点数」だけしか配置していない場合 pvt.pivotfields(1).function = xlaverage のように指定する事もできます。 >A3の意味も教えて これは割と見た目通りです。マクロでは新しいシートを挿入し、そこに目的のピボットテーブルレポートを作成しています そのレポートをA3から配置するという意味です。 #補足 実際のピボットテーブルの作成では、レポートフィルタ(ページフィールド)がA1から配置されますが、レポート本体はA3に配置される扱いになります。 そこを無視して無理にA1から配置する事も可能は可能ですが、あまり行いません。

Siam0710
質問者

補足

御回答感謝致します。  ・・・・・・・ With pvt .PivotFields("名前").Orientation = xlRowField .PivotFields("点数").Orientation = xlDataField pvt.PivotFields("合計 / 点数").Function = xlAverage End With End Sub で作動しましたが、教えていただいた以下で、 ・・・・・・・ With pvt .PivotFields("名前").Orientation = xlRowField .PivotFields("点数").Orientation = xlDataField pvt.pivotfields("合計 / 点数").function = xlaverage pvt.pivotfields("合計 / 点数").caption = "平均点数" End With End Sub しばらく作動していたのですが、別のパソコンでは作動しなくなり、試行錯誤で最初の記述になりました。 これでよいものかどうか? 個人的には、ケース2で作動させたいのですが、上手く行きません。(以下です)  ・・・・・・・ With pvt .PivotFields("名前").Orientation = xlRowField .PivotFields("点数").Orientation = xlDataField pvt.pivotfields(1).function = xlaverage End With  End Sub 御教示頂けると幸いです。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • EXCELマクロのピボットテーブル

    G列に名前、0列に点数があります。 ピボットテーブルで 名前, 平均/点数, 個数/点数 と横に表記したいのですが、 名前, 平均/点数,      個数/点数 と2行分かれて表記されます。 マクロは以下です。どこをどう変更したらよいでしょうか。 'ピボットテーブル作成 Dim pvt As PivotTable Dim rngData As Range Set rngData = ActiveSheet.Range("A1").CurrentRegion Sheets.Add Set pvt = _ ActiveWorkbook.PivotCaches.Add( _ SourceType:=xlDatabase, _ SourceData:=rngData). _ CreatePivotTable(TableDestination:=Range("A3")) With pvt .PivotFields("名前").Orientation = xlRowField .PivotFields("点数").Orientation = xlDataField pvt.DataFields(1).Function = xlAverage With pvt .PivotFields("名前").Orientation = xlRowField .PivotFields("点数").Orientation = xlDataField pvt.DataFields(1).Function = xlCount End With End With '

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

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

  • ピボットテーブルをマクロで行なうには

    以下3行目が項目でデータレコードが4~588行目迄入っています。(行数は毎回変わります) これをピボットテーブルで 縦列に"分類" 横行に"月" フィールドに"受注額(合計)" としたく以下マクロ記録しましたが次に実行しようとするとうまくいきません。 参考書読むとActiveSheetとEnd(xlUp)を使うのかなと思えたのですが 具体的にどのようしたら良いのか宜しく御願いします。 ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _ "'Aシート'!R3C1:R588C12").CreatePivotTable _ TableDestination:="", TableName:="ピボットテーブル1" ActiveSheet.PivotTableWizard TableDestination:=ActiveSheet.Cells(3, 1) ActiveSheet.Cells(3, 1).Select With ActiveSheet.PivotTables("ピボットテーブル1") .DisplayNullString = False .RowGrand = False .SmallGrid = False End With ActiveSheet.PivotTables("ピボットテーブル1").AddFields RowFields:="分類", _ ColumnFields:="月" With ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("受注額(合計)") .Orientation = xlDataField .NumberFormat = "#,##0_ ;[赤]-#,##0 " End With End Sub

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

    ピボットテーブルのマクロについて教えてください。 NO 場所  ランク 面積 1  東京  上    10 2  大阪  上    20 3  福岡  中    20 4  広島  中    30 5  東京  中    15 6  東京  中   25 7  大阪  下   35 8  福岡  下   45 9  大阪  下   10 10 大阪  下   10 という表があり、 場所ごとランクごとの面積集計を ピボットテーブルのマクロを組んで実施したい のですが(同じ作業を繰り返すので)、 マクロを記録して、内容を実行しようとすると、 「実行時エラー」が出てしまいます。 記録したマクロは以下の通りです。 ( → ←のところでエラーが出ます) Sub Macro1()  ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _   "Sheet1!C2:C4").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  ActiveSheet.PivotTables("ピボットテーブル2").AddDataField ActiveSheet.PivotTables( _    "ピボットテーブル2").PivotFields("面積"), "データの個数 / 面積", xlCount  Range("A3").Select  ActiveSheet.PivotTables("ピボットテーブル2").PivotFields("データの個数 / 面積 ").Function = _  xlSum End Sub ピボットテーブルのフィールドリストがうまく挙がってこないようなのですが、 どのようにマクロを組み直せば、よいのでしょうか? 作りたい集計表は、以下のようなものです。 場所 ランク  合計 広島  中   30  集計     30 大阪  下   55     上    20  集計     75 東京  上   10     中    40  集計     50 福岡  下   45     中    20  集計     65 総計      220 長々とまた見づらくてすみません。 よろしくお願いします。

  • マクロでピボットテーブルを作成するには?

    現在、仕事の関係でエクセルを多用しており、 仕事を楽にするためマクロを勉強しています。 インターネットを駆使して、下記のコードを作ってみたのですが、 【】の範囲で「参照が正しくありません」とエラーが出てしまいます。 どこがおかしいかご教授いただけますでしょうか? 自動記録でベースを作った後、範囲の指定を VBA上で行ったつもりです。 データの集計は「A」シートのA~G列まで、行は不定なので、 「A」シートの一番下までのデータを集計するようにしたいです。 縦に「要素」、内容に「金額」を集計するよう、 ピボットを記録しています。 Sub ピボットを行う() ' Range("A1").Select Range(Selection, Selection.End(xlDown)).Select Range(Selection, Selection.End(xlToRight)).Select 【 ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _ "A!Selection.Address").CreatePivotTable TableDestination:="", TableName:= _ "ピボットテーブル1"】 ActiveSheet.PivotTableWizard TableDestination:=ActiveSheet.Cells(3, 1) ActiveSheet.Cells(3, 1).Select ActiveSheet.PivotTables("ピボットテーブル1").SmallGrid = False ActiveSheet.PivotTables("ピボットテーブル1").AddFields RowFields:="要素" With ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("金額") .Orientation = xlDataField .Caption = "合計 : 金額" .Function = xlSum End With End Sub よろしくお願いいたします。

  • マクロでピボットテーブルを行う方法

    マクロ初心者です。よろしくお願い致します。 マクロでピボットテーブルにて集計を行いたいと思っています。 コマンドボタン1発で以下の全ての動作を行いたいです。 ■動作詳細■ [OK]コマンドボタンで指定したファイルを開く。 [OK]集計しやすいようにファイル内のデータを加工。 [NG]指定して開いたファイル上でピボットテーブル集計ができない。 ■NG要因として■ 指定して開いたファイルのSheet1上のデータをピボットテーブル新規作成でSheet2に作成するので、集計する元のデータの場所(Sheet1)をマクロ上に記載する必要があると思うのですが、うまくいきませんでした。 どなたかお分かりになる方がいらっしゃいましたらご助言いただければと思います。よろしくお願いします。 ■作成マクロ■ ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _ "test01!C1:C8").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 = xlColumnField .Position = 1 End With ActiveSheet.PivotTables("ピボットテーブル2").AddDataField ActiveSheet.PivotTables( _ "ピボットテーブル2").PivotFields("売上"), "データの個数 / 売上数量", xlCount 一度、作成したピボットテーブルのデータをマクロにコピーしてコマンドボタンにペーストしました。 それによって参照してあるセルの位置もズレてしまったのでしょうか? どこを直せばよいのか分からなくなってしまいました。 よろしくお願いいたします。

  • VBA : ピボットテーブルの作成

    下記の内容でマクロを記述しましたが、「Set pvt = ・・・」の時点で、「実行エラー '13' 型が一致しません」とエラーが生じてしまいます。 どの部分がいけないのでしょうか? よろしくお願い申し上げます。 ********************************************* Sub Macro1() Dim pvt As PivotTable Dim rngData As Range Dim shtName As String Dim mySht As Worksheet Sheets.Add 'シート名の変更 ActiveSheet.Name = "PVT123" For Each mySht In ActiveWorkbook.Worksheets shtName = mySht.Name If Left(shtName, 2) = "G-" Then mySht.Select Exit For End If Next '元データを変数に格納 lastRow = Cells(Rows.Count, 1).End(xlUp).Row lastClm = 1 Do Until Cells(1, lastClm).Value = "" lastClm = lastClm + 1 Loop lastClm = lastClm - 1 Set rngData = ActiveSheet.Range(Cells(1, 1), Cells(lastRow, lastClm)) 'ピボットテーブルの作成 Sheets("PVT777").Select Set pvt = _ ActiveWorkbook.PivotCaches.Add( _ SourceType:=xlDatabase, _ SourceData:=rngData). _ CreatePivotTable(TableDestination:=Range("A3")) ~以下省略~

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

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

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

    以下の項目があります。 ID,レースID,芝0・ダ1,平地0・障害1,距離,騎手名,調教師名,人気,単勝オッズ,着順,開催 ピボットテーブルで、騎手別の着順数をSheet2のA1に出力しようと、マクロの自動記録で以下を作りましたが、「コピーまたは移動先のセルの内容を置き換えますか」とエラーになります。 データ数は、増えていくので、可変になるようにお願いします。 Sub Macro3() ' ' Macro3 Macro ' マクロ記録日 : 2013/5/6 ユーザー名 : ' Range("A1").Select Range(Selection, Selection.End(xlDown)).Select Range(Selection, Selection.End(xlToRight)).Select ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _ "Sheet1!R1C1:R3785C11").CreatePivotTable TableDestination:=Range("A1"), _ TableName:="ピボットテーブル1" ActiveSheet.PivotTables("ピボットテーブル1").SmallGrid = False ActiveSheet.PivotTables("ピボットテーブル1").AddFields RowFields:="騎手名", _ ColumnFields:="着順" With ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("着順") .Orientation = xlDataField .Caption = "データの個数 : 着順" .Function = xlCount End With End Sub

  • ピボットテーブル完成後の最終行の取得をVBAで

    エクセル2003です。 あるデータからピボットテーブルを 作成し完成後、それの一部分を別シートに転記し その後ピボットテーブルを削除する構文を作成しました。 ●最終行 = .Cells(.Rows.Count, 1).End(xlUp).Row の部分でエラーです。 ・実行時エラー438 ・オブジェクトは、このプロパディまたはメソッドをサポートしていません。 この実行文のオブジェクトは ActiveSheet.PivotTables("ピボットテーブル1") でこれがサポートをしていないという事でしょうか? 範囲が変動するデータを基にピボットテーブル作成時は マクロの記録で作成した構文では対応できないので 書換えて対応出来たのですが ピボットテーブルが完成すると基のデータと 最終行、列がかわります。 そこにも同じ仕組みを入れたつもりですが駄目でした。 ピボットテーブル作成後の最終行の行番号の取得方法を教えて下さい。 変数 最終行に代入したいです。お願いします。 Sub 編集転記削除() Dim 範囲行 Dim 範囲列 Dim 範囲 Dim シート名 Dim 最終行 Dim 着手日 With Sheets("基データ")'基データのデータ範囲を取得 範囲行 = .Cells(.Rows.Count, 1).End(xlUp).Row 範囲列 = .Cells(1, Columns.Count).End(xlToLeft).Column End With 範囲 = "基データ!R1C1:R" & 範囲行 & "C" & 範囲列 ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:=範囲) _ .CreatePivotTable TableDestination:="", TableName:="ピボットテーブル1", _ DefaultVersion:=xlPivotTableVersion10 ActiveSheet.PivotTableWizard TableDestination:=ActiveSheet.Cells(3, 1) ActiveSheet.Cells(3, 1).Select '新規挿入されたシート名が変動するので変数に代入 シート名 = ActiveSheet.Name With ActiveSheet.PivotTables("ピボットテーブル1") .PivotFields("順番").Orientation = xlRowField .PivotFields("製造番号").Orientation = xlRowField .PivotFields("品名").Orientation = xlRowField .PivotFields("納期").Orientation = xlRowField .PivotFields("数量").Orientation = xlRowField .PivotFields("品番").Orientation = xlRowField .PivotFields("順番").Subtotals(1) = False .PivotFields("製造番号").Subtotals(1) = False .PivotFields("品名").Subtotals(1) = False .PivotFields("納期").Subtotals(1) = False .PivotFields("数量").Subtotals(1) = False .PivotFields("品番").Subtotals(1) = False .ColumnGrand = False .RowGrand = True '●ここでエラーになる↓ 最終行 = .Cells(.Rows.Count, 1).End(xlUp).Row Range(Range("B5"), Cells(最終行, 5)).Copy Sheets("リスト").Range("B4").PasteSpecial Paste:=xlPasteValues Range(Range("F5"), Cells(最終行, 6)).Copy Sheets("リスト").Range("A4").PasteSpecial Paste:=xlPasteValues End With ’ピボットテーブルを削除 Application.DisplayAlerts = False Sheets(シート名).Delete Application.DisplayAlerts = True End Sub

専門家に質問してみよう