
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で質問しましょう!
似たような質問が見つかりました
- その他(Microsoft Office) マクロVBAについて 1 2022/09/06 18:12
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2022/10/13 08:41
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2022/10/11 12:55
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2023/03/07 14:05
- Visual Basic(VBA) Excelのマクロコードについて教えてください。 1 2022/06/19 10:08
- Visual Basic(VBA) エクセルのマクロについて教えてください。 4 2023/03/02 08:40
- Excel(エクセル) ワードのマクロについて教えてください。 1 2023/03/11 13:50
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 1 2023/02/02 13:13
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/03/08 09:08
- Excel(エクセル) 【困っています】VBA 追加処理の記述を教えてください。 1 2022/08/25 22:54
このQ&Aを見た人はこんなQ&Aも見ています
-
Excel、VBAでピボットテーブル、pagefieldの絞込み
Excel(エクセル)
-
EXCEL 2010 VBAでピボットで複数のアイテムをセルでフィルタ指定
Visual Basic(VBA)
-
ピボットテーブルの日付フィルタ(VBA)
Excel(エクセル)
-
-
4
EXCELピボットテーブル(複数アイテム)
Excel(エクセル)
-
5
エクセル ピボットテーブルのマクロ設定について
Excel(エクセル)
-
6
変数にするとエラーになる理由は?
Excel(エクセル)
-
7
Excel > ピボットテーブル「(空白)」非表示
Excel(エクセル)
-
8
VBAでのフィルタについて(空白行の削除)
Excel(エクセル)
-
9
【EXCEL】先週の月曜日の日付を入れたいのです。
Excel(エクセル)
-
10
「Columns(A:C")」の列文字を数字にして表記したい"
Excel(エクセル)
-
11
数式による空白を無視して最終行を取得するマクロ
Excel(エクセル)
-
12
【Excel VBA】CSV取込時、数字の先頭の0を消えないようにするには?
Excel(エクセル)
-
13
worksheetFunctionクラスのVlookupプロパティを取得できません エラーへの対応
Visual Basic(VBA)
-
14
表にフィルターをかけ、絞ったデータ(可視化セルのみ)を一次元配列として変数に入れるという動作を書きた
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
SSDのクローンソフト(完全無料...
-
世界各国にある単3充電池を作...
-
菓子メーカー
-
メーカーに何度も問い合わせを...
-
パソコンが出火した。
-
太陽光発電 とくとくショップ
-
「Hzfluo」とは?
-
メーカーに「・・・さん」をつ...
-
銃器メーカーの Springfield Ar...
-
RAIDを構成する時のハードディ...
-
ノートパソコンの購入に際して
-
食洗機の電熱線の所にプラスチ...
-
PC内部で何かが転がる音がします。
-
アイオメガ製のklik! pc card d...
-
こういうのってどうやって作っ...
-
通信カラオケの通信費
-
走査電子顕微鏡の値段
-
異物混入 に、初めてあいました...
-
製造物の表示義務について (P...
-
ピボットテーブルで作った2つの...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
SSDのクローンソフト(完全無料...
-
メーカーに「・・・さん」をつ...
-
ピボットテーブルで作った2つの...
-
EXCEL2007 VBAでピボットのフィ...
-
電気部品のコンデンサで、ERDE ...
-
RAIDを構成する時のハードディ...
-
SSDで地雷メーカーってあるので...
-
オーディオデバイス
-
MSIのパソコン、信頼できますか?
-
製薬協と日薬連の違い
-
「フィールドスクリプト」とい...
-
「Hzfluo」とは?
-
ATV-551Dについてですが
-
メーカーに何度も問い合わせを...
-
GALAXY S22のsc-51cとscg13の違...
-
ベアリングの型式は番号の後に...
-
食洗機の電熱線の所にプラスチ...
-
無地の牛乳パックを手に入れる...
-
ドイツの陶磁器のメーカー名を...
-
アダルトビデオメーカーへの問...
おすすめ情報