2012-12-07 27 views
5

是否可以解釋一些方法來取消選擇新創建的數據透視表中的所有項目,以便我可以返回並僅選擇一個或兩個項目?我試過以下內容:使用vba取消選擇數據透視表中的所有項目

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

謝謝。

+0

你總是需要選擇一個單元格,所以如果你只是選擇一些隨機單元格而已? – PowerUser

+0

我只想選擇兩個特定的單元格,所以我想取消選擇所有的單元格,然後只選擇我想要的兩個單元格。 – Chris2015

+0

那麼,沒有必要先取消當前的選擇。你可以直接跳到選擇這兩個單元格嗎? – PowerUser

回答

6

這可能是你可以得到你想要的東西最接近:

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

這將使得第一個選項是唯一選項(假設這是內與指向透視字段)。如果您事先知道自己想要什麼,請相應修改。

+0

下面是我所用的。工作很好。謝謝! Dim i As Integer With ActiveSheet.PivotTables(「PivotTable1」)。PivotFields(「Business Area」).Orientation = xlRowField .Position = 1 For i = 2 To .PivotItems.Count .PivotItems(i).Visible = False .PivotItems( 「Fire and EMS - Uniform」)。Visible = True .PivotItems(「Police - Uniform」)。Visible = True .PivotItems(i - 1).Visible = False Next我以 – Chris2015

+0

結尾或相當昏暗i整數 With ActiveSheet.PivotTables( 「PivotTable1」)透視字段( 「業務區域」) .Orientation = xlRowField .POSITION = 1 對於i = 2〜.PivotItems.Count .PivotItems(I - 1)。。可見=假 .PivotItems(「Fire and EMS - Uniform」)。Visible = True .PivotItems(「Police - Uniform」)。 Visible = True .PivotItems(「(blank)」)。Visible = False Next i End With – Chris2015

+0

我已經使用這種方法,發現它仍然太慢,但通過將manualupdating設置爲true(即PivotTable.ManualUpdate = True),它使它變得可以忍受。 這裏描述:http://stackoverflow.com/questions/764504/speed-up-pivot-table-filtering-vba-code –

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" 

這基本上是一個標籤過濾器,但它爲我工作。

相關問題