我有一个需要在Excel中旋转的数据集,然后行标签按月分组(行标签是日期)。我有VBA设置来执行枢轴,然后将行标签分组到几个月,但在它分组到几个月之后,我试图获取下拉列表中的(空白)字段以取消选择。我尝试用录制宏来做这件事,但这不起作用;它只是像“< 11/15/15”那样做了。我发现代码应该适用于我的问题,但我一直收到无法找到数据透视项的错误消息。
以下是应该有效的代码。
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
问题可能在于我是按月分组项目吗?
答案 0 :(得分:0)
我的解决方案可能不是最优雅的,但您必须将数据透视表项的Visible值更改为TRUE。然后刷新数据透视表(如果关闭自动工作簿计算),然后您可以自由地将Visible值更改为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"
希望有所帮助。
答案 1 :(得分:0)
如果您仍然想计算“空白”的值,则可能需要尝试以下代码:
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.NumberFormat = ";;;"
End If
Next
End With
答案 2 :(得分:0)
int x = vetor[i-1];
int y = vetor[j-1];
答案 3 :(得分:-1)
如果您打开宏录制器并用鼠标单击步骤,我认为您可以得到答案。试一试,看看它是否能满足您的需求。