ピボットテーブル
Sheet1 にこんなデータ↓があるとします。(2行目以降は乱数で適当に作っただけ)
そして、"KEY"別に"DATA"をピボットテーブルで集計しようと QuizPivotTable マクロを作りました。
Sub QuizPivotTable() Dim shtA As Worksheet Dim rngA As Range Dim pvtA As PivotTable Dim shtP As Worksheet Set shtA = Worksheets("Sheet1") Set rngA = shtA.Range("A1").CurrentRegion Set shtP = Worksheets("Sheet2") shtP.Cells.Delete Set pvtA = shtA.PivotTableWizard _ (SourceType:=xlDatabase _ , SourceData:=rngA.Address(External:=True) _ , TableDestination:=shtP.Range("A1")) pvtA.PivotFields("KEY").Orientation = xlRowField pvtA.AddDataField pvtA.PivotFields("DATA") End Sub
でも、このマクロはエラーになります。マクロのどこをどう直せば、正常に動くでしょうか?(たったの1文字)
(Excel2003)
Excel2002 以前では、
pvtA.AddDataField pvtA.PivotFields("DATA")
を
pvtA.PivotFields("DATA").Orientation = xlDataField
にします。
【独断と偏見による判定】
マクロのコードを見ただけで分かった方
ピボットテーブルと VBA の超エキスパート! な〜んでそんなこと知っているの?って感じ。
いろいろ試して、1分以内に分かった方
優秀なVBAの使い手 いい勘してるね。
いろいろ試して、10分以内に分かった方
普通のVBAの使い手 大抵のことは自分で解決できるでしょ。
いろいろ試して、1時間以内に分かった方
まだまだこれからのVBAの使い手 根性あるね〜。今後に期待。
いろいろ試したけど分からない方
VBAの使い手・・・じゃないね。多分。
答えは・・・。
pvtA.AddDataField pvtA.PivotFields("DATA")
と書いているなら、
pvtA.AddDataField pvtA.PivotFields("DATA2")
にします。
pvtA.PivotFields("DATA").Orientation = xlDataField
と書いているなら、
pvtA.PivotFields("DATA2").Orientation = xlDataField
にします。
要は、フィールド名が"DATA"のときは、そのまま"DATA"ってのは VBA 上では使えなくて、"DATA2"にしなければならないということですね。
※.Excel World の 2006年6月30日 00:09 の日記をコピーしています。
http://excel.sns.fc2.com/excel/