根据日期对Excel Pivot项目进行排序

时间:2012-05-06 10:20:36

标签: arrays excel vba pivot-table

编辑:解决了!!还不能提出解决方案。

我有一个带有“日期”字段的数据透视表。我需要一个VBA代码,从最旧的日期到最新的日期。

我需要日期为AUS格式,即。 dd / mm / yyyy或d mmm yyyy或类似。 这是Excel没有正确排序它们。

因此,假设pivotfield“Dates”具有以下枢轴项:

01 Jan 2012
30 Apr 2012
(blank)
03 Feb 2013
14 Feb 2012
22 Nov 2012

正确的顺序是:

01 Jan 2012
14 Feb 2012
30 Apr 2012
22 Nov 2012
03 Feb 2013
(blank)

我想我越来越近但仍然没有运气。

Dim pi As PivotItem
Dim pfd As PivotField
Dim pt As PivotTable

Set pfd = pt.PivotFields("Snapshot Date")

For Each pi In pfd.PivotItems
pi = CDate(pi) 'converts to US date for sorting 
Next pi

pfd.AutoSort _
xlAscending, "Snapshot Date"

For Each pi In pfd.PivotItems
pi = Format(pi, "d mmm yyyy") 'converts to AUS
Next pi

感谢您的帮助。 Ramify

1 个答案:

答案 0 :(得分:0)

我认为您不必为此创建宏。选择您的日期,右键单击 - >单元格格式 - >日期 - >选择您希望的日期格式。

然后进行排序,选择要排序的所有行,转到数据/排序,选择包含日期和排序顺序的列(升序/降序),然后单击“确定”。

您的日期应该排序;)

编辑:当你使用宏时,尝试类似的东西

Set pfd = pt.PivotFields("Snapshot Date")
pfd.Sort Key1:=Range("A1"), Order1:=xlDescending, Header:=xlYes