VBA:数据透视表分组(月,日,小时,分钟)

时间:2018-02-05 19:39:41

标签: excel vba grouping pivot-table slicers

我试图编写一个可以根据(月,日,小时,分钟)对时间戳列进行分组的代码。我使用的代码是

PTable.RowAxisLayout xlTabularRow
    Set PField = PTable.PivotFields("Date")
    With ActiveSheet.PivotTables("BigDataPivotTable").PivotFields("Time Stamp")
        .Orientation = xlRowField
        .Group Start:=True, End:=True, Periods:=Array(False, True, True, _
        True, True, False, False)
        .Position = 1 
    End With

但它没有给我我正在寻找的东西

以下是数据透视表

enter image description here

我希望它看起来像这样

enter image description here

感谢您的帮助,

谢谢,

2 个答案:

答案 0 :(得分:0)

尝试这样的事情:

Range("A4").Select
Selection.Group Start:=True, End:=True, Periods:=Array(True, True, True, _
        True, True, False, False)

答案 1 :(得分:0)

Group方法适用于Range,而不适用于PivotField。这就是马特使用“选择”的答案起作用的原因。但是,如果您不想使用select怎么办?我个人避免尽可能地更改选择。将选择留给用户,让VBA使用范围。

在这种情况下,我们需要找到要分组的范围:

   With ActiveSheet.PivotTables("BigDataPivotTable").PivotFields("Time Stamp")
        .LabelRange.Cells(1,2).Group Start:=True, End:=True, Periods:=Array(False, True, True, _
        True, True, False, False)
        .Position = 1 
   End With

此处的密钥位于.LabelRange.Cells(1,2)中。这将找到第一个包含该字段中实际数据的单元格,这就是我们要分组的内容。如果仅尝试对.LabelRange进行分组,则会收到错误消息,因为这只是字段的标签,而不是数据。请注意,我们也不需要为该字段选择整个数据范围,只需在包含数据的字段中选择一个单元格即可。