EXCEL 2010 VBAでピボットテーブルを生成しようとしております。
PivotTables("ピボット")にて フィルタで初期表示するデータフィールド「担当者」の値を別途シートのセルで指定できればと思っております。
「担当者」には今回データで「A」「B」「C」「D」「E」、、、、合計約100人の名前があったとして 複数の担当者名を表示指定したいとして、その担当者名は、別シート「MAIN]のセルA1~A15に入力されている名前を使用したい
以前の回答からヒントをもらい下記のようなマクロをイメージしてますが、うまくいきません。セルの値でのピボットフィルタ指定のVBAについて教えてください。
※過去アンサーより抜粋
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
A 回答 (1件)
- 最新から表示
- 回答順に表示
No.1
- 回答日時:
まぁ~初級レベルなジジィなので違っても当然かもですが。
内容が良くわからなかったので検証はしてません。
不安であれば無視して下さい。
またエラーになるようならお手上げです。(憶測なので)
-----
Sub try_4()
'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 s , 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, ",")
With Worksheets("MAIN")
s = Application.Transpose(.Range("A1", .Cells(Rows.Count, 1).End(xlUp)).Value)
End With
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で質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) Excel VBAどこが間違ってますか? 4 2023/07/17 10:04
- Visual Basic(VBA) 【VBA】写真の貼り付けコードがうまく機能しません。 5 2022/09/01 18:43
- Excel(エクセル) VBAの指示の内容 昨日こちらでご教示頂いたのですが初心者な為、一つ一つの指示が何をやっているのかわ 2 2022/10/25 18:08
- Visual Basic(VBA) 【前回の続き続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/24 20:49
- Visual Basic(VBA) VBA処理追加 こちらでご教示頂いたのですが回答完了させてしまいましたのでこちらからまた質問させてく 2 2022/10/27 09:57
- Visual Basic(VBA) VBA 参照先で選んだファイルをコピーし、出力先に別名で保存したい 8 2022/05/13 20:37
- Excel(エクセル) B列に文字がはいったらA列に数字が入るマクロードを完成させたい 4 2023/04/21 01:58
- Visual Basic(VBA) このVBAでExcelアプリケーションを作成は必要ですか? 3 2023/07/19 21:13
- Visual Basic(VBA) Excel VBA キーワードから列を取得して、さらに空欄行を非表示にする 3 2022/10/21 22:49
- Visual Basic(VBA) 貼り付けた値が消えていく 以下はソースファイルの2番目のシートのB6から最終行を取得 ターゲットファ 2 2023/07/27 12:23
このQ&Aを見た人はこんなQ&Aも見ています
-
性格の違いは生まれた順番で決まる?長男長女・中間子・末っ子・一人っ子の性格の傾向
同じ環境で生まれ育っても、生まれ順で性格は違うものなのだろうか。家庭教育研究家の田宮由美さんに教えてもらった。
-
EXCEL2007 VBAでピボットのフィルタ指定
その他(プログラミング・Web制作)
-
Excel、VBAでピボットテーブル、pagefieldの絞込み
Excel(エクセル)
-
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
-
-
4
ピボットテーブルの日付フィルタ(VBA)
Excel(エクセル)
-
5
エクセル ピボットテーブルのマクロ設定について
Excel(エクセル)
-
6
VBA PivotItemをセルの中身で選択
Visual Basic(VBA)
-
7
複数のピボットを同じフィルターに連動させたいです。 年間の売り上げが1つの表にズラーっとあるのですが
Excel(エクセル)
-
8
Excel VBA ピボットテーブルにて、 最終行の取得の仕方を教えてください
Excel(エクセル)
-
9
エクセルでエラーが出て困っています。
Excel(エクセル)
-
10
Excel > ピボットテーブル「(空白)」非表示
Excel(エクセル)
-
11
ピボットテーブルでの毎回可変するデータの最終行までの範囲を指定したいです。
PowerPoint(パワーポイント)
-
12
EXCEL VBAで全選択範囲の解除
Excel(エクセル)
-
13
ExcelVBAを使って、値がある場合は作業を繰り返し実行するプログラムを作成したい。
Visual Basic(VBA)
-
14
エクセルVBAでセルに入力したパスでブックを開く
Excel(エクセル)
-
15
EXCELピボットテーブル(複数アイテム)
Excel(エクセル)
-
16
VBAで文字列を数値に変換したい
Excel(エクセル)
-
17
EXCEL VBA 指定したファイルが存在しない場合メッセージボックスを表示させる
Access(アクセス)
-
18
Excel VBA: ピボットテーブルの値貼り付け
Excel(エクセル)
-
19
Excel オートフィルタのリストを取得したい
Excel(エクセル)
-
20
E列のセルに数値が入れば(空白でなければ)B列の同じ行のセルに色がつく
その他(Microsoft Office)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBAマクロ実行時エラーの修正に...
-
【VBA】写真の貼り付けコードが...
-
Excel UserForm の表示位置
-
VBA にて、条件付き書式で背景...
-
エクセルVBA 配列からセルに「...
-
【VBA】【ユーザーフォーム_Lis...
-
EXCEL 2010 VBAでピボットで複...
-
特定の色のついたセルを削除
-
入力規則のリスト選択
-
Excel VBA 同じ処理を複数回行...
-
Excel VBA IF文がうまく動作し...
-
昨日、質問した件『VBA にて、...
-
下記のマクロの説明(意味)を...
-
EXCEL VBA 文中の書式ごと複写...
-
CellEnterイベント仕様について
-
【Excel VBA】一番右端セルまで...
-
VBA:日付を配列に入れ別セルに...
-
データのある範囲を選択するVBA...
-
マクロの実行時エラー'1004'が...
-
VB2005 DataGridView で選択...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBAマクロ実行時エラーの修正に...
-
エクセルVBA 配列からセルに「...
-
VBA 複数条件の分岐処理の上手...
-
Excelで空白セル直前のセルデー...
-
Excel UserForm の表示位置
-
EXCEL VBA 文中の書式ごと複写...
-
特定の色のついたセルを削除
-
VBA にて、条件付き書式で背景...
-
VBAでユーザーフォームにセル値...
-
【VBA】写真の貼り付けコードが...
-
【Excel VBA】一番右端セルまで...
-
Excel VBAでCheckboxの名前を変...
-
エクセルの合計を自動で表示さ...
-
【VBA】【ユーザーフォーム_Lis...
-
VBA:日付を配列に入れ別セルに...
-
Excel VBA IF文がうまく動作し...
-
下記のマクロの説明(意味)を...
-
入力規則のリスト選択
-
C# DataGridViewで複数選択した...
-
関数の引数でrangeを指定したとき
おすすめ情報