前書き
大学院に通う理系学生です.
研究の実験データの処理のためにマクロを使ってデータ処理を行おうと思っています.
プログラムは今回が初めてで,ネットで調べて勉強して1から取り組んでいる状態です.
初心者なので至らない部分もあるかと思いますが,皆様のお力をお借りしたいです.
内容・目的
今回の目的はピボットテーブルにラベルのフィルターをかけることです.
実験のエクスポートしたデータを処理するのに使用します.
横軸x/H,縦軸y/H (Hで無次元化した座標系)を指定し,その位置での値u/U0をテーブルに表示します.
ラベルの数値(今回はx/Hのみをフィルターするためy/Hはフィルターをかける必要なし)は各実験ごとに
フィルターの値が変化するので,それに対応できるプログラムを組みたいと考えています.
そこで取り出すラベルの値を別個に計算したものが,1~8行目となっており,
8行目の値がフィルターしたい数値となっており,値で張り付けてあります.
E8~AD8を参照してフィルターをかけていくという流れです.
プログラムのソース
Sub test2() Dim itm As PivotItem For Each itm In ActiveSheet.PivotTables(1).PivotFields("x/H").PivotItems Select Case itm.Value Case Range("e8"), Range("f8"), Range("g8"), Range("h8"), Range("i8"), Range("j8"), Range("k8"), Range("l8"), Range("m8"), Range("n8"), Range("o8"), Range("p8"), Range("q8"), Range("r8"), Range("s8"), Range("t8"), Range("u8"), Range("v8"), Range("w8"), Range("x8"), Range("y8"), Range("z8"), Range("aa8"), Range("ab8"), Range("ac8"), Range("ad8") itm.Visible = True Case Else itm.Visible = False End Select Next itm End Sub
問題点
このプログラムで実行してみたのですが,フィルター後,表示できていないラベルがいくつかできてしまいます.
具体的にはH8~L8までのラベルが表示できていません.
ちなみに以下のことは確認済みです.
・ピボットテーブルのラベルの数値とD8AD8までの数値は,最後の桁まで完全に一致L8までの値の存在を確認.
・フィルターで折りたたまれているラベルの中にH8
問題点をまとめると,
H8~L8までのラベルが折りたたまれてしまっているということです.
解決法がわかる方がおりましたら,ご享受頂ければ幸いです.
ご質問について(手作業の場合の動作)
写真の一枚目がフィルターをかける前,二枚目がフィルタをかけた後のものです.
手作業の場合,算出したラベルの数値のみが残るように,他のラベルのチェックを外していくという作業を行っております.
この作業が非常に手間のかかるものなので,VBAで自動化することが目的です.
ちなみにラベルの数値は昇順に並んでおり,現在のプログラムでは昇順に(値の小さい方から)フィルターを
かける・かけないの判断をしている模様です.(プログラムを一時停止して確認しました)

回答1件
あなたの回答
tips
プレビュー