
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も見ています
-
EXCELピボットテーブル(複数アイテム)
Excel(エクセル)
-
EXCEL2007 VBAでピボットのフィルタ指定
その他(プログラミング・Web制作)
-
Excel、VBAでピボットテーブル、pagefieldの絞込み
Excel(エクセル)
-
-
4
複数のピボットを同じフィルターに連動させたいです。 年間の売り上げが1つの表にズラーっとあるのですが
Excel(エクセル)
-
5
Excelのセルにユーザー名を表示する方法
Excel(エクセル)
-
6
ブック名、シート名を他のモジュールからも参照可能にする方法
Access(アクセス)
-
7
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
-
8
数式による空白を無視して最終行を取得するマクロ
Excel(エクセル)
-
9
ピボットテーブルでの毎回可変するデータの最終行までの範囲を指定したいです。
PowerPoint(パワーポイント)
-
10
ピボットテーブルの日付フィルタ(VBA)
Excel(エクセル)
-
11
特定の文字を含むシートだけマクロ処理をしたい
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excel UserForm の表示位置
-
EVCEL VBA での最小値の検索
-
エクセルVBAで、セル内のテキス...
-
(印)という文字を読み込みたい。
-
【VBA】マクロの書き方がわから...
-
VBAマクロ実行時エラーの修正に...
-
【Excel VBA】検索フォームの不...
-
エクセル VBA
-
Excel VBAでのwebクエリ取得デ...
-
タブ区切りのテキストファイル...
-
VBAで、可変する範囲の合計の出...
-
VBA target Range を変えたら良...
-
エクセルVBA 配列からセルに「...
-
VBAを使用した登録確認と新規登...
-
セルに背景を設定したいのです...
-
EXCEL2010 VBAのチェックマー...
-
QRコード作成マクロについて
-
DataGridViewで指定したセルに...
-
セル範囲内値の一文字削除
-
可変長文字列で困ってます
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBAマクロ実行時エラーの修正に...
-
Excel UserForm の表示位置
-
特定の色のついたセルを削除
-
Excelで空白セル直前のセルデー...
-
エクセルVBA 配列からセルに「...
-
【VBA】【ユーザーフォーム_Lis...
-
VBA:日付を配列に入れ別セルに...
-
複数指定セルの可視セルのみを...
-
C# DataGridViewで複数選択した...
-
【Excel VBA】マクロで書き込ん...
-
データグリッドビューの結合セ...
-
DataGridViewのフォーカス遷移...
-
Excel 範囲指定スクショについ...
-
【Excel VBA】一番右端セルまで...
-
EXCEL VBA 文中の書式ごと複写...
-
【VBA】写真の貼り付けコードが...
-
QRコード作成マクロについて
-
入力規則のリスト選択
-
CellEnterイベント仕様について
-
エクセル、マクロで番号を読込...
おすすめ情報