Excel VBA从数据透视组中删除空白

我有一个数据集,需要在Excel中旋转,行标签然后按月分组(行标签是date)。 我有VBA安装程序来做的关键,然后将行标签分组到几个月,但在它分组到几个月后,我试图让下拉(空白)字段取消select。 我尝试着录制一个macros,这是行不通的。 它只是做了像“<11/15/15”。 我发现代码应该为我的问题,但我不断收到错误信息,无法find数据透视表项目。

这是应该工作的代码。

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 

这个问题可能是因为我先把这些项目按月分组?

我的解决scheme可能不是最优雅的,但您必须将您的透视项目的Visible值更改为TRUE。 然后刷新数据透视表(在自动工作簿计算closures的情况下),然后您可以将可见值自由更改为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 

我也有一个替代解决scheme(更不优雅):你可以从一个数据透视表中删除空白值与datefilter:

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

这也可以使用标签filter(如果你有一个string/数字表):

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

希望有所帮助。

我想你可以得到你的答案,如果你打开macroslogging器,用鼠标点击步骤。 试试吧,看看它是否给你你想要的。