我试图编写一个可以根据(月,日,小时,分钟)对时间戳列进行分组的代码。我使用的代码是
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
但它没有给我我正在寻找的东西
以下是数据透视表
我希望它看起来像这样
感谢您的帮助,
谢谢,
答案 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进行分组,则会收到错误消息,因为这只是字段的标签,而不是数据。请注意,我们也不需要为该字段选择整个数据范围,只需在包含数据的字段中选择一个单元格即可。