2012-05-06 6 views
1

Редактировать: Решено! Пока не удается решить проблему.Сортировка элементов таблицы Excel на основе даты

У меня есть сводная таблица с полем «даты». Мне нужен код VBA, который сортируется от самых старых до новейших.

Мне нужны даты для формата AUS, т.е. dd/mm/yyyy или d mmm yyyy или аналогичный. Это когда Excel не упорядочивает их правильно.

Итак, давайте говорить, что pivotfield «Даты» имеет следующие пункты поворота:

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

+0

делает клетку имеет формат дату? Когда вы нажимаете на ячейку, вы должны иметь «01/01/2012» в формуле. – Uflex

+0

Я обновил описание :) – Ramify

+0

ну, лучше с кодом ... ваша функция PivotFields возвращает диапазон справа? Почему бы вам не использовать сортировку? – Uflex

ответ

0

Я думаю, вам не нужно создавать макрос для этого. Выберите даты, щелкните правой кнопкой мыши-> формат ячейки-> дата-> выберите формат, который вы хотите для своих дат.

Затем, чтобы отсортировать, выберите все свои строки, которые хотите сортировать, перейдите к данным/сортировке, выберите столбец с датами и порядок сортировки (по возрастанию/убыванию) и нажмите «ОК».

дата Вашей должна быть отсортирована;)

EDIT: как вы будете использовать макрос, попробовать что-то вроде этого

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

Проблема в том, что мне нужно, чтобы она отображалась как d/mm/yy, а не m/dd/yyy. Если я делаю numberformat для ячеек, он работает, но затем он просто возвращается в США, когда я обновляюсь. :( – Ramify

+0

Когда вы обновляете? Используете ли вы макрос для обновления некоторых других данных? – Uflex

+0

Я обновил описание. – Ramify

Смежные вопросы