Excel数据透视表中的日期排序

时间:2015-04-17 20:08:54

标签: excel pivot-table

我有一个数据透视表,里面有一个日期字段,称之为Mydate。

我已将其作为列标签,然后按年,月和日对标签进行分组。

然后,我点击标签,然后选择Sort New to Oldest,将年份和日期按相反的顺序排列。

如果我然后扩展月份以显示日期然后尝试对日期进行排序,那么排序就搞砸了....它将10日以上的日子视为第2,3天之前的日子等。

以下是行标签部分的内容:

    -2015  
         -Apr
             9-Apr
             8-Apr
             ...
             2-Apr
             1-Apr
             16-Apr
             15-Apr
             ...

有没有办法在数据透视表中修复此问题,还是需要另外添加“日期”列才能使其正常工作?

编辑:如果我取消组合日期字段,然后只对没有年份或月份的日期进行排序,它们会正确存储为日期并且排序正常工作。

2 个答案:

答案 0 :(得分:1)

短: 如果我们使用Excel的默认排序机制对数据透视表数据字段进行排序,则数据透视表字段中的日期将以文本方式排序,而不是以日期方式排序。如果当天只有一位数字,则按日期排序顺序不正确。当天是否只有一位数字,仅取决于Windows的区域设置,而不取决于Excel中的日期格式。

长: 我们在Windows的区域设置中使用短日期格式,当天只有一位数。 Control Panel - Clock, Language, and Region - Region and Language

enter image description here

这是德国的Windows。在英语Windows中,例如m/d/yy

现在我们有这样的Excel数据。

enter image description here

请注意,Excel的日期格式为mm/dd/yyyy

我们按年,月和日创建一个数据透视表和组。如果我们按日期排序,他们将以文本方式排序。按日期排序顺序不正确。

enter image description here

现在我们将Windows的区域设置中的短日期格式更改为当天的两位数。

enter image description here

同样,这是德国的Windows。在英语Windows中,例如mm/dd/yyyy

我们刷新数据透视表。现在按日期顺序排列。但它总是以文本方式排序。

enter image description here

答案 1 :(得分:0)

Axel的答案有效,但如果您打算将工作表发送给其他用户,您可能不知道他们是否更新了他们的设置。

以下是通过VBA执行此操作的代码:

Private Declare Function SetLocaleInfo _
  Lib "kernel32" Alias "SetLocaleInfoA" ( _
  ByVal Locale As Long, _
  ByVal LCType As Long, _
  ByVal lpLCData As String) As Boolean

Private Declare Function GetUserDefaultLCID% Lib "kernel32" ()

Private Const LOCALE_SSHORTDATE = 31

Private Sub ChangeSettingExample()
'change the setting of the character displayed as the decimal separator.
    Call SetLocalSetting(LOCALE_SSHORTDATE, "MM/dd/yy") 'to change to proper format
    'check your control panel to verify or use the
    'GetLocaleInfo API function
End Sub

Private Function SetLocalSetting(LC_CONST As Long, Setting As String) As Boolean
    Call SetLocaleInfo(GetUserDefaultLCID(), LC_CONST, Setting)
End Function

注意:我修改了此处的代码:用户Tom Schreiner的Control Windows Regional Settings