裏技では無く、回りくどくて良ければ。
ダミーシート(非表示でも可)を追加して、ピボットテーブル範囲を参照する数式をセットし、
さらにその範囲を参照して『普通のグラフ』を作ればできなくもないです。
『ピボットグラフの利点が必要ない、簡単なグラフの場合』という条件付きではありますが。
ピボットテーブルの更新に備えて、グラフの元データ範囲を可変にしたければ、[名前定義]とSERIES関数を使えば良いです。
'サンプルグラフを作ってみるコード
Sub try()
Dim ws As Worksheet
Dim n As String
'データシート作成
Set ws = Sheets.Add
ws.Range("A1:B4").Value = [{"f1","f2";"a",1;"b",2;"c",3}]
With ActiveWorkbook.PivotCaches.Add(xlDatabase, ws.Name & "!r1c1:r4c2") _
.CreatePivotTable(ws.Range("D1"))
.AddFields RowFields:="f1"
.AddDataField .PivotFields("f2"), , xlSum
End With
With Sheets.Add
n = .Name & "!"
'参照式セット
.Range("A1:B100").Formula = "=" & ws.Name & "!D1"
'名前定義セット
.Names.Add "cnt", "=match(""総計"",$A:$A,0)-3"
.Names.Add "name", "=offset($A$3,,,cnt)"
.Names.Add "data", "=offset($A$3,,1,cnt)"
End With
'グラフ作成
With ws.ChartObjects.Add(300, 0, 300, 300).Chart
.ChartType = xlPie
.SeriesCollection.NewSeries.Formula _
= "=series(," & n & "name," & n & "data,)"
End With
ws.Activate
Set ws = Nothing
End Sub
適当なBookで実行するだけです。
マクロの内容はあまり気にせず、できたサンプルシートを参考にしてください。
#動作確認はwinXP/xl2003のみ。
#エラーで作成されなかったら捨て置いてください。
ピボットテーブルが必要ないのでしたら、ピボットテーブルをコピー、そのまま値貼り付けして
ピボット機能を削除すれば良いだけですが、さすがにそれはナシですよね?
お礼
>ピボットテーブルが必要ないのでしたら、ピボットテーブルをコピー、そのまま値貼り付けして 実は、それも考えたのですが(^^;; できれば、他の方法がないかと思ってました。 マクロ、ありがとうございました!