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

Date Sorting in Excel PivotTables

我有一个数据透视表,其中有一个日期字段,将其命名为 Mydate。

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

然后我通过单击标签然后选择“从新到旧排序”将年份和日期倒序排列。

如果我随后展开月份以显示日期,然后尝试对日期进行排序,排序就会一团糟....它将 10 天以上的日期视为第 2、3 天等之前

这是行标签部分中的样子:

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

有什么方法可以在数据透视表中解决这个问题,还是我需要创建一个额外的 "Day" 列才能使其正常工作?

编辑:这些被正确存储为日期,如果我取消日期字段的分组然后仅对没有年或月的日期进行排序,则排序工作正常。

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

中的日期格式

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

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

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

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

我们创建一个枢轴 table 并按年、月和日对其进行分组。如果我们对日期进行排序,它们将以文本方式排序。这将按日期排序。

现在我们将 Windows 区域设置中的短日期格式更改为使用两位数字表示日期。

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

然后我们刷新枢轴 table。现在它将按日期正确排序。但它总是 nor 以文本方式排序。

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

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