
お世話になります。
VBAによるピボットテーブルの操作で悩んでおります。
20万件強×5項目程度のデータを扱っており、一旦ピボットテーブル化後、
ピボットテーブル上の項目に対し、ユーザが入力する、検索条件に対し、
高速に抽出する方法を探しています。
5年以上前の古いQ&Aコミュニティから、これはという手順を見つけたものの、
標題の件の問題を解決できず、しばらく悩んでおります。
サンプルで問題を再現します。
下図のピボットテーブルで、項目「メーカー」のアイテム「A」のみを
抽出する為に、下記のVBAがあります。
【上図左:ピボットテーブル(テーブル名:数量予測)】
(レポートのレイアウトで、”表形式で表示”にし、”アイテムのラベルを
すべて繰り返す”設定に変更しております)
【VBAソースコード】
Sub try_7()
Dim pf As PivotField
Dim r As Range
Dim n As Long
Set pf = ActiveSheet.PivotTables("数量予測").PivotFields("メーカー")
Set r = pf.DataRange
n = r.Cells.Count - 5
If n > 0 Then
r.Resize(n).Offset(5).Delete
End If
End Sub
【上図右:VBA処理後のピボットテーブル】
問題というのは、データは変動し、メーカーのAの数も変動する中で、
項目「メーカー」のアイテム「A」の数を取得する方法が不明です。
(問題未解決のため、上記VBAコードは、Aの数(=5)は定数になっております。。。)
尚、VBAのバージョンは以下の通りです。
Microsoft Visual Basic for Applications 7.0
Version 1643 VBA: Retail 7.0.1643 Forms3: 14.0.7153.5001
解決できる手段をご存知の方がいらっしゃいましたら、
ご教授頂ければ幸いです。
どうぞ宜しくお願い致します。