2016-11-06 1 views
0

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

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

Я хочу, чтобы элементы поворота были более динамичными, как раньше, я попытаюсь добавить проверку даты и даты, чтобы сделать ее более динамичной.

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

Sub DateSlection() 

With ActiveSheet 
.PivotTables("PivotTable4").PivotFields("Date") 
     .PivotItems("11/2/2016").Visible = True 
     .PivotItems("10/26/2016").Visible = True 
    End With 
    End Sub 

вид касается

Али

+0

https://www.thespreadsheetguru.com/blog/2014/9/27/vba- руководство-excel-pivot-tables взгляните туда, это должно помочь вам :-) – Niclas

ответ

0

Для динамического фильтра вы могли бы сделать что-то вроде этого:

Sub DateSlection() 

Dim startDate As String 
Dim endDate As String 

With ActiveSheet 
    'Set your date parameters in the required date format 
    '- looks like you need US 
    startDate = Format(.Range("A1").Value, "mm/dd/yyyy") 
    endDate = Format(.Range("A2").Value, "mm/dd/yyyy") 

    'clear the existing filter and add the new 
    .PivotTables("PivotTable4").PivotFields("Date").ClearLabelFilters 
    .PivotTables("PivotTable4").PivotFields("Date").PivotFilters.Add Type _ 
      :=xlDateBetween, Value1:=startDate, Value2:=endDate 
End With 

End Sub 

Я также понимаю, что вы хотите получить первые две даты в стержне Таблица? Если так что вы можете сделать это:

ActiveSheet.PivotTables("PivotTable4").PivotFields("Date").PivotItems(1) 
ActiveSheet.PivotTables("PivotTable4").PivotFields("Date").PivotItems(2) 

Чтобы получить последние две даты вы можете сделать:

With ActiveSheet.PivotTables("PivotTable4").PivotFields("Date") 
    ptCount = .PivotItems.Count 
    last = .PivotItems(ptCount) 
    secondLast = .PivotItems(ptCount - 1) 
End With 
+0

У меня есть два года данных, будет ли приведенный ниже код автоматически выбрать первые две последние даты – user3287522

+0

Нет - это не будет, это даст первый два. Я отредактировал свой ответ, хотя для того, чтобы включить то, что вам нужно – lorgan

+0

Ваш код не работает ни для – user3287522