新しく作成されたピボット テーブルですべてのアイテムの選択を解除して、戻って 1 つまたは 2 つのアイテムのみを選択できるようにする方法を簡単に説明できますか? 私は次のことを試しました:
.PivotItems("(Select All)").Visible = False
ありがとう。
これはおそらくあなたが望むものに到達できる最も近いものです:
Dim i As Long
.PivotItems(1).Visible = True
For i = 2 To .PivotItems.Count
.PivotItems(i).Visible = False
Next
これにより、最初のオプションが唯一の選択されたオプションになります(これがピボットフィールドを指すwith内にあると仮定します)。事前に必要なものがわかっている場合は、それに応じて変更してください。
各データ項目をループすると時間がかかることがわかりました。すべての項目をループせずにピボット内の 1 つの項目をフィルター処理する場合にできることは、次のコードを使用することです。
ActiveSheet.PivotTables("Your Pivot Name").PivotFields("Your Field Name").ClearAllFilters
ActiveSheet.PivotTables("Your Pivot Name").PivotFields("Your Field Name").PivotFilters.Add _
Type:=xlCaptionEquals, Value1:="Your string here"
これは基本的にラベルフィルターですが、私にとってはうまくいきました。
以下をチェックしてください。特定のフィールド名のデータを選択します。デフォルトでは、少なくとも1つのアイテムを選択する必要があることに注意してください。また、アイテムを非表示にする場合は、ピボットテーブルフィールド内の連続するアイテムのみを非表示にできることを忘れないでください。おそらく、ページの読み込み時、ワークシートのオープン時、またはその他のサブトリガーのいずれかで、特定のフィールドに基づいて選択する特定のアイテムを選択できます。次に、コードが他の処理を続行できるようにします。
Sub specificItemsField()
Dim pf As PivotField
Dim pi As PivotItem
Dim strPVField As String
strPVField = "Field Name"
Set pt = ActiveSheet.PivotTables(1)
Set pf = pt.PivotFields(strPVField)
Application.ScreenUpdating = False
Application.DisplayAlerts = False
On Error Resume Next
pf.AutoSort xlManual, pf.SourceName
For Each pi In pf.PivotItems
pi.Visible = True
Next pi
pf.AutoSort xlAscending, pf.SourceName
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub
これは、カスタム フィルターの選択方法です。二重ループのため、遅くなる可能性があります。
Dim toSelect(1 To 3) As String
toSelect(1) = "item1"
toSelect(2) = "item2"
toSelect(3) = "item3"
For Each pvItem In objField.PivotItems
For Each st In toSelect
If pvItem.Value = st Then
pvItem.Visible = True
Exit For
Else
pvItem.Visible = False
End If
Next
Next