[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『ピボットテーブルで列ラベルと値に配置するVBA』(たけみや)
超初心者ですが教えてください。
エクセル2010でピボットテーブルの作成をマクロで組みたいと思っています。
A B
001 リンゴ
002 なし
003 すいか
001 みかん
003 リンゴ
002 すいか
上記のようなデータをピボットテーブルで
行ラベルにA、列ラベルと値にBを配置して
A リンゴ なし すいか みかん
001 1 1
002 1 1
003 1 1
というような形にしたいですがマクロで記録して実行すると
Bが値だけに配置されていて思ったようにできません
どのように修正すればいいか教えてください。
下記、マクロ全文です。
Sub Macro1()
'
' Macro1 Macro
'
'
Dim ws As Worksheet Dim pvc As PivotCache Dim pvt As PivotTable Set ws = Sheets.Add Set pvc = ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, _ SourceData:="Sheet1!R1C1:R6C2") Set pvt = pvc.CreatePivotTable(TableDestination:=ws.Name & "!R3C1", _ TableName:="ピボットテーブル1", _ DefaultVersion:=xlPivotTableVersion10) Cells(3, 1).Select With ActiveSheet.PivotTables("ピボットテーブル1") .InGridDropZones = True .RowAxisLayout xlTabularRow End With With ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("001") .Orientation = xlRowField .Position = 1 End With With ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("リンゴ") .Orientation = xlRowField .Position = 2 End With With ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("リンゴ") .Orientation = xlColumnField .Position = 1 End With ActiveSheet.PivotTables("ピボットテーブル1").AddDataField ActiveSheet.PivotTables( _ "ピボットテーブル1").PivotFields("リンゴ"), "データの個数 / リンゴ", xlCount End Sub
< 使用 Excel:Excel2010、使用 OS:Windows7 >
まず、一行目には見出しを付けましょう。 A1に"番号"、B1に"品名"とあるとしてご提示のマクロ記録を元にすると こんな感じになると思います。
また、値フィールドへの紐付けを最初に行わないと不具合が出るようです。 Sub Macro1()
Dim ws As Worksheet Dim pvc As PivotCache Dim pvt As PivotTable Set ws = Sheets.Add Set pvc = ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, _ SourceData:="Sheet1!R1C1:R6C2") Set pvt = pvc.CreatePivotTable(TableDestination:=ws.Name & "!R3C1", _ TableName:="ピボットテーブル1", _ DefaultVersion:=xlPivotTableVersion10)
Cells(3, 1).Select ActiveSheet.PivotTables("ピボットテーブル1").AddDataField ActiveSheet.PivotTables( _ "ピボットテーブル1").PivotFields("番号"), "データの個数 / 番号", xlCount
With ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("品名") .Orientation = xlColumnField .Position = 1 End With
With ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("番号") .Orientation = xlRowField .Position = 1 End With
End Sub
こちらはさらにそれを加工したものです。ご参考までに。 Sub sample() Dim adr As String adr = Sheets(1).Name & "!" & Sheets(1).Range("a1").CurrentRegion.Address With ActiveWorkbook.PivotCaches.Add(xlDatabase, adr).CreatePivotTable(Sheets.Add.Range("a1"), "table1") .AddDataField .PivotFields("番号"), "個数", xlCount .PivotFields("品名").Orientation = xlColumnField .PivotFields("番号").Orientation = xlRowField End With End Sub (Jera) 2014/03/16(日) 18:38
早々かつ明確なご回答有難うございます!!
おかげさまで解決致しました!!
本当にありがとうございます!!!!
(たけみや) 2014/03/16(日) 18:57
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.