
A列~O列にデータがあって、G列に名前、O列に点数が入力されています。列数は変化しませんが、行数が変化します。
可変する行数で、名前別の平均値をマクロで出すにはどうすればよいですか?
ネット検索の結果、以下のマクロで合計は出るのですが、平均値が出せません。
CreatePivotTable(TableDestination:=Range("A3"))のA3の意味も教えていただけないでしょうか。
よろしくお願いします。
Sub Macro1()
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
End With
No.2
- 回答日時:
こちらとしてもすっきり解決さっさと終わりたいところですが、ご質問は?
>試行錯誤で最初の記述になりました。
>これでよいものかどうか?
いま動いてるのでしたら、それでいいですけど? 何がどのように上手く動かないのですか?
補足のご質問でいま何が聞きたいのかも、いま現在の最新の状況も、いずれも不明瞭で、もうしわけありませんが「回答」できません。
この回答への補足
御迷惑をお掛けします。
(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)のみで結構です。御教示お願いします。
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から配置する事も可能は可能ですが、あまり行いません。
この回答への補足
御回答感謝致します。
・・・・・・・
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が見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルで特定の列が0表示の場...
-
メッセージボックスのOKボタ...
-
TERA TERMを隠す方法
-
特定のPCだけ動作しないVBAマク...
-
ExcelのVBA。public変数の値が...
-
一つのTeratermのマクロで複数...
-
エクセルで縦に並んだデータを...
-
Excel_マクロ_現在開いているシ...
-
エクセルで別のセルにあるふり...
-
マクロ実行時、ユーザーフォー...
-
VBSからエクセルのマクロを起動...
-
VBAでの質問
-
Excel・Word リサーチ機能を無...
-
エクセル VBA実行中のApplicati...
-
Excel マクロ VBA プロシー...
-
特定文字のある行の前に空白行...
-
EXCELマクロでのThisisWor...
-
[初心者です]VBAで指定列か...
-
UWLSの記録でマクロを作成し使...
-
Excel 改ページのVBAうまくい...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで特定の列が0表示の場...
-
特定のPCだけ動作しないVBAマク...
-
メッセージボックスのOKボタ...
-
Excel_マクロ_現在開いているシ...
-
一つのTeratermのマクロで複数...
-
マクロの連続印刷が突然不可能...
-
ExcelのVBA。public変数の値が...
-
Excel マクロ VBA プロシー...
-
Excel・Word リサーチ機能を無...
-
エクセルに張り付けた写真のフ...
-
Excelのセル値に基づいて図形の...
-
TERA TERMを隠す方法
-
マクロ実行時エラー
-
ExcelVBAでPDFを閉じるソース
-
wordを起動した際に特定のペー...
-
特定文字のある行の前に空白行...
-
Excel マクロでShearePoint先の...
-
エクセルで縦に並んだデータを...
-
マクロ実行時、ユーザーフォー...
-
ソース内の行末に\\
おすすめ情報