0

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

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

但它没有给我我想要的东西

下面是数据透视表

在此处输入图像描述

我希望它看起来像这样

在此处输入图像描述

感谢您的帮助,

谢谢,

4

2 回答 2

0

尝试这样的事情:

Range("A4").Select
Selection.Group Start:=True, End:=True, Periods:=Array(True, True, True, _
        True, True, False, False)
于 2018-03-07T12:06:11.893 回答
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 进行分组,则会出现错误,因为这只是字段的标签而不是数据。请注意,我们也不需要为字段选择整个数据范围,只需选择包含数据的字段中的单元格。

于 2020-05-05T17:38:16.940 回答