[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『ピボットフィールドのうち、特定のものを表示する』(初心者)
お世話になっております。
ピボットテーブルの「G/L 勘定」フィールドのうち、"803042*"、 "811042*"、"823001*"(*以下は何でもOK)のもののみ表示する、というマクロを作りたいです。
『特定のピボットフィールドを表示するマクロ』(バーバラ)という昔の投稿を参考に、以下のマクロを作りましたが、いったん全非表示もされず、目的のものを表示することもできません。どうすればよいでしょうか?
一度Sheet2にピボットを作成(ピボットテーブル1)した後、Sheet2をコピーしてSheet3にしています。
そのSheet3のピボットに「G/L 勘定」フィールドのうち、"803042*"、 "811042*"、"823001*"(*以下は何でもOK)のもののみ表示するという加工を加えます。
以下のマクロはSheet2をコピーしてSheet3にするところからです。
Sheets("Sheet2").Select
Sheets("Sheet2").Copy Before:=Sheets("Sheet2")
ActiveSheet.Name = " Sheet3"
On Error Resume Next
With ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("G/L 勘定") Dim PvItem As PivotItems 'いったん全非表示 For Each PvItem In .PivotItems .PivotItems(PvItem.Name).Visible = False Next PvItem '条件に合うものをチェック For Each PvItem In .PivotItems If (PvItem.Name Like "803042*") Or (PvItem.Name Like "811042*") Or _ ("823001*") Then .PivotItems(PvItem.Name).Visible = True End If Next PvItem End With End sub
< 使用 Excel:Excel2003、使用 OS:Windows10 >
これはできません。
なので、逆にします。
1)フィルター解除(いったん全表示)
2)不要なものを非表示
(マナ) 2020/06/22(月) 15:29
ありがとうございます。
表示するものはわかっているのですが、非表示にするものが毎回変わってわからない場合、対応しようがないのでしょうか?
(初心者) 2020/06/22(月) 15:52
マナさんのおっしゃる通り、一度すべて表示した後、 表示対象に当てはまらなければ、非表示にする。とすればできると思います。
Like演算子は、Notをつけることで反転させる(?)ことができます。 ↓が参考になるかと思います(^^) https://www.relief.jp/docs/excel-vba-not-like.html
(虎) 2020/06/22(月) 16:27
'シート3の作成(減価償却費のみ抽出)
Sheets("Sheet2").Select
Sheets("Sheet2").Copy Before:=Sheets("Sheet2")
ActiveSheet.Name = "Sheet3"
On Error Resume Next
With ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("G/L 勘定") Dim PvItem As PivotItems 'いったん全表示 For Each PvItem In .PivotItems .PivotItems(PvItem.Name).Visible = True Next PvItem '条件に合わないものを非表示 For Each PvItem In .PivotItems If Not (PvItem.Name Like "803042*") Then .PivotItems(PvItem.Name).Visible = False End If Next PvItem End With End Sub
(初心者) 2020/06/22(月) 16:55
For Each PvItem In .PivotItems
If PvItem.Name = "7010110000" Then .PivotItems(PvItem.Name).Visible = False End If (初心者) 2020/06/22(月) 17:11
これなしで実行してみてください
(マナ) 2020/06/22(月) 17:37
(マナ) 2020/06/22(月) 17:46
>.PivotItems(PvItem.Name).Visible = False ↓ PvItem.Visible = False
(マナ) 2020/06/22(月) 17:49
ありがとうございます。
解決できました!
実行してみたところ、
For Each PvItem In .PivotItems
のところで「方が一致しません」というエラーが出がので、
型をVARIANTにしました。
また、IF NOT OR〜だとエラーが出たので以下のようにしました。
With ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("G/L 勘定")
Dim PvItem As Variant
'条件に合わないものを非表示
For Each PvItem In .PivotItems
If Not (PvItem.Name Like "803042*") Then PvItem.Visible = False End If If (PvItem.Name Like "811042*") Then PvItem.Visible = True End If If (PvItem.Name Like "823001*") Then PvItem.Visible = True End If Next PvItem
本当にありがとうございました!
(初心者) 2020/06/23(火) 08:52
複数形だから型が違うとなるのです。
>Dim PvItem As PivotItems ↓~~ Dim PvItem As PivotItem
>また、IF NOT OR〜だとエラーが出たので
1行にしないで、1条件ずつ判定するとよいです。
With ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("G/L 勘定") 'いったん全表示 .ClearAllFilters
'条件に合わないものを非表示 For Each PvItem In .PivotItems If Not (PvItem.Name Like "803042*") Then If Not (PvItem.Name Like "811042*") Then If Not (PvItem.Name Like "823001*") Then PvItem.Visible = False End If End If End If Next PvItem End With
(マナ) 2020/06/23(火) 19:36
なるほど!
ありがとうございました。
とても助かりました。
(初心者) 2020/06/24(水) 08:32
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.