| 
    
     |  | とん さん: こんにちは。VBA質問箱には久しぶりに顔を出させていただきます。m(__)m
 
 私はピボットはあまり使ったことがないので詳しくないのですが、
 >「野菜の中のきゅうりの1月〜3月の合計金額」
 他の抽出条件がどのようなものかわかりませんがGetDataで取れると思いますよ♪
 
 >現在ピボットテーブルをVBAで作っています。
 元のデータから、こんな感じでピボットテーブルを作成されたと仮定して...(Excel2000)
 
 Sub PivotTable作成()
 Dim pvt As PivotTable, arrSubTtl, arrTitle, arrField, arrPos, i As Long
 arrSubTtl = Array(False, False, False, False, False, False, False, False, False, False, False, False)
 arrTitle = Array("ジャンル", "名前", "月別売上", "金額")
 arrField = Array(1, 1, 2, 4)
 arrPos = Array(1, 2, 1, 1)
 Set pvt = ActiveWorkbook.PivotCaches.Add(1, [A1].CurrentRegion.Address).CreatePivotTable("")
 For i = LBound(arrTitle) To UBound(arrTitle)
 With pvt.PivotFields(arrTitle(i))
 .Orientation = arrField(i)
 .Position = arrPos(i)
 If arrTitle(i) = "ジャンル" Then
 .Subtotals = arrSubTtl
 End If
 End With
 Next
 With pvt
 .ColumnGrand = False
 .RowGrand = False
 .RefreshTable
 End With
 End Sub
 
 GetDataで取得できました。RowGrandを表示させてないとダメみたいです。
 
 Sub 合計取得()
 Dim pvt As PivotTable, tmp
 Set pvt = ActiveSheet.PivotTables(1)
 With pvt
 .RowGrand = True
 tmp = .GetData("'総計' 野菜 きゅうり")
 .RowGrand = False
 End With
 Set pvt = Nothing
 MsgBox tmp
 End Sub
 
 >条件が決められたものであればいいのですが、毎回変わってしまいます。
 でしたら、条件を引数で渡してやればいかがですか?
 
 
 |  |