Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


12843 / 13644 ツリー ←次へ | 前へ→

【8323】ピボットテーブルのデータを条件検索 とん 03/10/8(水) 19:36 質問
【8336】Re:ピボットテーブルのデータを条件検索 コロスケ 03/10/9(木) 13:28 発言
【8362】Re:ピボットテーブルのデータを条件検索 とん 03/10/10(金) 15:29 お礼

【8323】ピボットテーブルのデータを条件検索
質問  とん  - 03/10/8(水) 19:36 -

引用なし
パスワード
   お世話になっております。
とんです。
色々教えていただいて少しずつ目標のものができてきているのですが
また躓いてしまっているので、助けてください。

現在ピボットテーブルをVBAで作っています。
下のようなピボットテーブルができます。
<例>
           月別売上
ジャンル  名前   1月    2月   3月
くだもの  りんご  2000円  1500円  1000円
      みかん  3000円  3000円  2000円
      バナナ  1100円  4000円  2000円
野菜    きゅうり 1000円  3000円  200円
      レタス  5000円  1000円  9000円

月別売上の合計金額を出しています。

この合計金額を、他のフォーマットのシートへコピーしたいので
「くだものの中のみかんの1月〜3月の合計金額」
「野菜の中のきゅうりの1月〜3月の合計金額」
というような条件でデータ抽出を行いたいのです。

GetDataを試したのですが、データ抽出条件を変数に入れてあるためかうまくできませんでした。
条件が決められたものであればいいのですが、毎回変わってしまいます。
どのようにすればいいのでしょう?
もうパニックですっ!

【8336】Re:ピボットテーブルのデータを条件検索
発言  コロスケ E-MAILWEB  - 03/10/9(木) 13:28 -

引用なし
パスワード
   とん さん:
こんにちは。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

>条件が決められたものであればいいのですが、毎回変わってしまいます。
でしたら、条件を引数で渡してやればいかがですか?

【8362】Re:ピボットテーブルのデータを条件検索
お礼  とん  - 03/10/10(金) 15:29 -

引用なし
パスワード
   コロスケさん

お返事ありがとうございました!
お礼が遅くなってしまってすみません。

なんとかGetDataでとることができました。
問題はまだ山積みですが、とりあえず少し前進しました。
ありがとうございました!!

12843 / 13644 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free