EXCEL 2007 VBAでピボットテーブルを生成しようとしております。
レポートフィルタで初期表示するデータフィールド「メーカー」の値も
指定できればと思っております。
「メーカー」には今回データで「A」「B」「C」「D」「E」とあったとして
「メーカー」 ... 「A」と「C」だけで表示指定したいとして、
下記操作で記録マクロを取ってみました。
1. レポートフィルタ「メーカー」を追加
2. フィルタ条件で「(すべて)」のチェック外して、全て消す。
3. 「メーカー」 ... 「A」と「C」を指定
結果は希望通りなのですが、
記録マクロを確認すると下記のように「A」と「C」で指定できておりません。
これだとメーカー「F」のデータが追加された際、
希望通りでないと思うのですが、良い方法をどなたかご存じないでしょうか?
ActiveSheet.PivotTables("数量予測").PivotFields("メーカー").CurrentPage = "(All)"
With ActiveSheet.PivotTables("数量予測").PivotFields("メーカー")
.PivotItems("B").Visible = False
.PivotItems("D").Visible = False
.PivotItems("E").Visible = False
End With
No.1ベストアンサー
- 回答日時:
Ver2007でClearAllFiltersメソッドが追加されました。
繰り返して使う場合も想定して、ClearAllFiltersで一旦全表示にします。
その後、表示したいアイテムを指定して、それ以外(Case Else)は非表示、
という処理で良いかと思います。
Sub try()
Dim pf As PivotField
Dim p As PivotItem
Set pf = ActiveSheet.PivotTables("数量予測").PivotFields("メーカー")
pf.Orientation = xlPageField
pf.ClearAllFilters
For Each p In pf.PivotItems
Select Case p.Value
Case "A", "C" '表示アイテム名をカンマ区切りで指定
Case Else
p.Visible = False
End Select
Next
End Sub
Ver2007以降でないと動作しません。
2003でも使う可能性があるなら以下のようにPageFieldを再配置。
但し、再配置前に更新する必要があります。
Sub try_2()
Dim pf As PivotField
Dim p As PivotItem
Set pf = ActiveSheet.PivotTables("数量予測").PivotFields("メーカー")
pf.Orientation = xlHidden
pf.Parent.PivotCache.Refresh
pf.Orientation = xlPageField
For Each p In pf.PivotItems
Select Case p.Value
Case "A", "C" '表示アイテム名をカンマ区切りで指定
Case Else
p.Visible = False
End Select
Next
End Sub
ありがとうございます!望みどおりに出力することが出来ました!!
ループ処理で指定値でなければ、非表示にするとは考え及びませんでした。
検証・御礼が遅くなり申し訳ございません。
一番目のコードを使わせていただきます。
Excel2003化を渋っている人間がいるので、
これを人質にバージョンアップさせることも出来るので大助かりです。
No.2
- 回答日時:
ぁ、そうだ。
PivotFields("メーカー")のItem数が数百を超える場合は
1件ずつ非表示にしていくとワークシート表示がもたついてかなり遅いです。
その場合、Application.ScreenUpdatingプロパティで表示を制御してください。
それでも遅い場合は、一旦RowFieldに配置してまとめて処理します。
1個だけ仮表示アイテムとして残してそれ以外まとめて非表示にし、
表示アイテムの処理をした後にPageFieldに配置するような感じです。
ちょっと難解かもしれませんが書いておきますね。
Sub try_3()
Const Lst = "A,C" '表示アイテム名をカンマ区切りで指定
Dim pf As PivotField
Dim r As Range
Dim n As Long
Dim x As String
Dim s() As String
Dim si
Application.ScreenUpdating = False
Set pf = ActiveSheet.PivotTables("数量予測").PivotFields("メーカー")
'行フィールドに配置
pf.Orientation = xlRowField
'最左列配置
pf.Position = 1
Set r = pf.DataRange
'データ範囲の1つめのセルを仮表示アイテムとして値を記憶
x = r.Item(1).Value
n = r.Cells.Count - 1
If n > 0 Then
'仮表示アイテムだけ残してまとめて非表示
r.Resize(n).Offset(1).Delete
End If
'表示アイテム処理
s = Split(Lst, ",")
On Error Resume Next
For Each si In s
pf.PivotItems(si).Visible = True
Next
On Error GoTo 0
'記憶しておいた仮表示アイテムの処理
If IsError(Application.Match(x, s, 0)) Then
pf.PivotItems(x).Visible = False
End If
'ページフィールドに配置
pf.Orientation = xlPageField
Application.ScreenUpdating = True
End Sub
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
あなたが普段思っている「これまだ誰も言ってなかったけど共感されるだろうな」というあるあるを教えてください
-
フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
あなたが普段思っている「これまだ誰も言ってなかったけど共感されるだろうな」というあるあるを教えてください
-
映画のエンドロール観る派?観ない派?
映画が終わった後、すぐに席を立って帰る方もちらほら見かけます。皆さんはエンドロールの最後まで観ていきますか?
-
海外旅行から帰ってきたら、まず何を食べる?
帰国して1番食べたくなるもの、食べたくなるだろうなと思うもの、皆さんはありますか?
-
天使と悪魔選手権
悪魔がこんなささやきをしていたら、天使のあなたはなんと言って止めますか?
-
Excel、VBAでピボットテーブル、pagefieldの絞込み
Excel(エクセル)
-
EXCEL 2010 VBAでピボットで複数のアイテムをセルでフィルタ指定
Visual Basic(VBA)
-
ピボットテーブルの日付フィルタ(VBA)
Excel(エクセル)
-
-
4
Excel VBA ピボットテーブルにて、 最終行の取得の仕方を教えてください
Excel(エクセル)
-
5
エクセル ピボットテーブルのマクロ設定について
Excel(エクセル)
-
6
複数のピボットを同じフィルターに連動させたいです。 年間の売り上げが1つの表にズラーっとあるのですが
Excel(エクセル)
-
7
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
-
8
VBA PivotItemをセルの中身で選択
Visual Basic(VBA)
-
9
ユーザーフォームを表示中にシートの操作をさせるには
Excel(エクセル)
-
10
エクセルVBAで5行目からオートフィルタモードに設定したいたい
Excel(エクセル)
-
11
VBAでエクセルシートを更新(リフレッシュ)する方法を教えて下さい。
Excel(エクセル)
-
12
マクロ登録したピボットが重いのです
Excel(エクセル)
-
13
ピボットテーブルでの毎回可変するデータの最終行までの範囲を指定したいです。
PowerPoint(パワーポイント)
-
14
EXCELピボットテーブル(複数アイテム)
Excel(エクセル)
-
15
オートフィルターをかけ、#N/A以外で絞込みするVBA記述をご教示ください
Excel(エクセル)
-
16
VBAで先月、先々月を求める方法
Visual Basic(VBA)
-
17
EXCEL VBA 指定したファイルが存在しない場合メッセージボックスを表示させる
Access(アクセス)
-
18
Excleピボットでデータのない部分も時系列で表示したい
Excel(エクセル)
-
19
指定したシート名以外を非表示にするには?VBA
Excel(エクセル)
-
20
VBAマクロ実行時エラーの修正について
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
SSDのクローンソフト(完全無料...
-
メーカーに「・・・さん」をつ...
-
制気口の開口率について
-
食洗機の電熱線の所にプラスチ...
-
トリメンベースという化合物に...
-
ミーレかオキシジェンか
-
GALAXY S22のsc-51cとscg13の違...
-
数年前にジャパネットで買った...
-
特命係長
-
文化鍋のつまみ
-
6畳のお部屋に32型テレビは小さ...
-
ピボットテーブルで作った2つの...
-
Wi-Fi
-
SSDで地雷メーカーってあるので...
-
●「(ルーム)エアコン」は、何...
-
「Hzfluo」とは?
-
絶縁抵抗測定を行う場合、使用...
-
電気がトリップするのトリップ...
-
空調動力盤の主幹ブレーカー選...
-
主幹ブレーカー容量計算式
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
SSDのクローンソフト(完全無料...
-
メーカーに「・・・さん」をつ...
-
RAIDを構成する時のハードディ...
-
Wi-Fi
-
食洗機の電熱線の所にプラスチ...
-
「Hzfluo」とは?
-
EXCEL2007 VBAでピボットのフィ...
-
ピボットテーブルで作った2つの...
-
hattekerとはどこの国のメーカ...
-
GALAXY S22のsc-51cとscg13の違...
-
ラムネ菓子『ミオ』は・・・
-
MSIのパソコン、信頼できますか?
-
SSDで地雷メーカーってあるので...
-
製薬協と日薬連の違い
-
冷蔵庫の天板に水がたまる
-
電気部品のコンデンサで、ERDE ...
-
76と言うメーカーは、なんと言...
-
ベアリングの型式は番号の後に...
-
「フィールドスクリプト」とい...
-
メーカーに何度も問い合わせを...
おすすめ情報