1

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

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

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

因此,假设枢轴字段“日期”具有以下枢轴项:

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

谢谢你的帮助。分枝

4

1 回答 1

0

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

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

你的日期应该排序;)

编辑:当您使用宏时,请尝试类似的操作

Set pfd = pt.PivotFields("Snapshot Date")
pfd.Sort Key1:=Range("A1"), Order1:=xlDescending, Header:=xlYes
于 2012-05-06T10:32:59.090 回答