[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『ピボットテーブルのラベルフィルタ―の空白処理について』(ECARLAT)
「支店名」「品目」「販売月」「売上」の項目を持つデータシートから「支店名」をフィルタ―、行を「品目」、列を「販売月」、値を「売上」に設定したピボットテーブルをVBAで作成しています。
「販売月」は、テキスト形式で2022年1月は"202201"と6桁の文字でデータを持っています。
ピボットテーブルを作成する際に集計期間を設定、列に設定した「販売月」にフィルターで該当期間の月だけを抽出させるようにしています。
販売期間の抽出は
With ActiveSheet.PivotTables(ピボットName).PivotFields("販売月")
.Orientation = xlColumnField
.ClearAllFilters
For Each p_販売月 In ActiveSheet.PivotTables(ピボットName).PivotFields("販売月").PivotItems
If InStr(FilterMonth, p_販売月.Value) = 0 Then
p_販売月.Visible = False
End If
Next
End With
でできています。
ところが中には「販売月」に空白(未記入)を使用している支店があり、「販売月」の空白はピボットテーブルでは表示させたくないため、ラベルフィルタ―で空白のチェックを外したいのです。
必ず空白が含まれているのであれば
.PivotItems("(blank)").Visible = False
で対処できるのですが、支店によって空白の有無がまちまちなので空白が含まれていない支店の場合、上記の記載があるとエラーが出てしまいます。
このような状況の中で、販売月のラベルフィルタ―に空白が含まれている場合に空白のチェックを外すにはどのようにしたらよいでしょうか?
ご助言のほどよろしくお願いします。
< 使用 Excel:Office365、使用 OS:Windows10 >
エラーになるとは、どこの行で発生し、なんというエラーですか?
簡単な動作確認をしてみました。 ・FilterItem="202201,202202,202203"のような指定をしておけば、 p_販売月という PivotItem の .Valueが"(blank)" であれば、 p_販売月.Visible = False が実行されて、所期するような非表示になると思いますが。
(参考)実験コード Sub test() Dim ピボットName$ Dim p_販売月 Dim FilterMonth$
FilterMonth = "202201,202202,202203"
ピボットName = "ピボットテーブル1" With ActiveSheet.PivotTables(ピボットName).PivotFields("販売月") .Orientation = xlColumnField .ClearAllFilters For Each p_販売月 In ActiveSheet.PivotTables(ピボットName).PivotFields("販売月").PivotItems Debug.Print p_販売月.Value If InStr(FilterMonth, p_販売月.Value) = 0 Then p_販売月.Visible = False End If Next End With End Sub (γ) 2022/11/03(木) 05:34:22
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.