2012-12-07 205 views
5

新しく作成したピボットテーブル内のすべてのアイテムを選択解除して1つまたは2つのアイテムだけを選択できるように説明できますか?私は以下を試した:ピボットテーブル内のすべてのアイテムをvbaを使用して選択解除する

.PivotItems("(Select All)").Visible = False 

ありがとう。

+0

常に1つのセルを選択する必要があるため、代わりにランダムセルを選択するだけですか? – PowerUser

+0

私は、選択した2つの特定のセルだけを選択したいので、それらのすべてを選択解除してから、必要な2つだけを選択したいと思っていました。 – Chris2015

+0

さて、あなたの現在の選択を最初に選択解除する必要は本当にありません。これら2つのセルを選択するだけで、まっすぐにスキップできますか? – PowerUser

答えて

6

これはおそらく、あなたが欲しいものを得ることができる最も近い:

Dim i As Long 
.PivotItems(1).Visible = True 
For i = 2 To .PivotItems.Count 
    .PivotItems(i).Visible = False 
Next 

これは(これはそのpivotfieldを指すとの範囲内にあると仮定して)非常に最初のオプションのみ選択したオプションになります。あなたが手前で欲しいものが分かっていればそれに応じて修正してください。

+0

ここに私が行ったことがあります。素晴らしい仕事をした。ありがとう! PivotFields( "ビジネスエリア").Orientation = xlRowField .Position = 1 i = 2の場合.PivotItems.Count .PivotItems(i).Visible = False .PivotItems(PivotTable1) Visible = True .PivotItems(i - 1).Visible = False次に、iは – Chris2015

+0

で終わり、iは整数ではなく となります。 ActiveSheet.PivotTables( "PivotTable1")PivotFields( "ビジネスエリア") .Orientation = xlRowField .Position = 1 iに対して= 2 .PivotItems.Count .PivotItems(I - 1)へ。.Visible = Falseの .PivotItems( "火事とEMS - 制服")。Visible = True 。ピボットアイテム( "警察制服")。 Visible = True 。ピボットアイテム( "(空白)")。Visible = False 次へi End With – Chris2015

+0

私はこのアプローチを使用していましたが、それはまだ遅すぎるが、manualupdatingをtrue(つまりPivotTable.ManualUpdate = True)にすることによって、それは耐え難いものになりました。 ここで説明します:http://stackoverflow.com/questions/764504/speed-up-pivot-table-filtering-vba-code –

1

以下を確認してください。特定のフィールド名のデータを選択します。デフォルトでは、少なくとも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  
0

カスタムフィルタの選択方法です。二重ループのために遅くなることがあります。私は、各データ項目をループすると、あなたはすべての項目をループすることなく、ピボットに単一の項目にフィルタを適用したい場合は、あなたが何ができるか、多くの時間を要することがわかってきました

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 
2

は、次のコードを使用しています:

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" 

これは基本的にラベルフィルタですが、私のために働きました。

関連する問題