2016-03-15 234 views
1

我有一個數據集需要在Excel中旋轉,然後行標籤按月分組(行標籤是日期)。我有VBA安裝來完成數據透視,然後將行標籤分組到幾個月,但在分組到幾個月後,我試圖讓下拉列表中的(空白)字段取消選擇。我試圖用錄製一個宏來做這件事,那是行不通的。它只是做了像「< 11/15/15」。我發現應該適用於我的問題的代碼,但我一直收到無法找到數據透視表項的錯誤消息。Excel VBA從數據透視組中刪除空白

這是應該工作的代碼。

Dim p_i As PivotItem 

With ActiveSheet.PivotTables("PivotTable1").PivotFields("Delivery Time of Actual Item") 
    .PivotItems("(blank)").Visible = True 
    For Each p_i In .PivotItems 
     If p_i.Name = "(blank)" Then 
      p_i.Visible = False 
     End If 
    Next 
End With 

問題是否出現這樣的事實,即我先按月對這些項目進行分組?

+1

如果你刪除這行'.PivotItems(「(blank)」)。Visible = True' does it work? –

+0

這沒有奏效。我終於決定在數據透視前對數據進行預格式化,並刪除空白數據的行。這種方式空白不會被創建,因爲我只是將它們濾掉。我仍然想看看是否有人知道爲什麼這不起作用。 – Zionmoose

+0

我剛剛測試過這段代碼,不能重現問題。然後我從數據中刪除了所有空白行並再次進行了測試,結果在'.PivotItems(「(blank)」)。Visible = True'行失敗,但在For循環中沒有失敗。我希望這個測試可以幫助你。 –

回答

-1

我想你可以得到你的答案,如果你打開宏記錄器,並點擊你的鼠標的步驟。嘗試一下,看看它是否給你你想要的。

+0

我沒那個。這是讓我到上面的代碼。錄音機失敗了我,它不會做我需要的。不過謝謝。 – Zionmoose

0

我的解決方案可能不是最優雅的,但您必須將透視項目的可見值更改爲TRUE。然後刷新樞軸(如果自動工作簿計算被關閉),然後就可以自由地改變可見值FALSE:

With ActiveSheet.PivotTables("PivotTable1") 
    .PivotFields("Delivery Time of Actual Item").PivotItems("(blank)").Visible = True 
    .RefreshTable 
    .PivotFields("Delivery Time of Actual Item").PivotItems("(blank)").Visible = False 
End With 

我還一種替代解決方案(甚至更少優雅):可以除去從空白值用日期過濾器樞軸:

ActiveSheet.PivotTables("PivotTable1").PivotFields("Delivery Time of Actual Item") 
.PivotFilters.Add2 Type:=xlAfter, Value1:="1901-01-01" 

這也與標籤過濾器來完成(如果你有一個字符串/數字表):

ActiveSheet.PivotTables("PivotTable1").PivotFields("Delivery Time of Actual Item") 
    .PivotFilters.Add2 Type:=xlCaptionIsGreaterThan, Value1:="0" 

希望有所幫助。