Поиск  Пользователи  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Регистрация
Войти
 
Страницы: 1
RSS
Фильтр сводной таблицы на основе значения ячейки, в фильтре содержатся даты
 
Добрый день уважаемые знатоки Excel

Написал макрос который должен фильтровать фильтр сводной таблицы на основе даты из ячейки E4
Код
Sub FLTRDT()

ActiveSheet.PivotTables("freshnees_tbl").ClearAllFilters
    On Error Resume Next
    ActiveSheet.PivotTables("freshnees_tbl").PivotCache.Refresh


    On Error Resume Next
    Dim pf233 As PivotField
    On Error Resume Next
    Set pf233 = ActiveSheet.PivotTables("freshnees_tbl").PivotFields("Дата ИО")
    On Error Resume Next
   pf233.ClearAllFilters
    On Error Resume Next
pf233.CurrentPage = CDate(Range("E4").Value)

End Sub
но почему то ничего не получается и значению ячейки для фильтра установил CDate, но ничего не происходит. В чем может быть проблема ?
Изменено: pinguindell - 11 Апр 2016 19:34:43
 
On Error Resume Next действует на всю процедуру, не надо повторять это после каждой строки.
CurrentPage здесь вообще не к месту.
Попробйте записать фильтрацию макрорекордером и посмотрите на код.
 
pinguindell, Вы не учли две вещи.
1. В E4 дата отображается с коротким годом (16), а внутри Excel'я год в виде 2016. А в фильтре год короткий.
2. В фильтре даты отображаются с точкой, а внутри Excel'я даты со слешами. Это можно увидеть, применив такой код:
Код
Sub jjj()
    Dim pf233 As PivotField
    Set pf233 = ActiveSheet.PivotTables("freshnees_tbl").PivotFields("Дата ИО")
    Debug.Print pf233.PivotItems(1).Caption
End Sub

Новый макрос. В фильтре уберите флажок "Выделить несколько элементов".
Код
Sub FLTRDT()
    Dim pf233 As PivotField
    'удаление несуществующих данных, которые раньше были в таблице с данными
    ActiveSheet.PivotTables("freshnees_tbl").PivotCache.MissingItemsLimit = xlMissingItemsNone
    ActiveSheet.PivotTables("freshnees_tbl").PivotCache.Refresh
    Set pf233 = ActiveSheet.PivotTables("freshnees_tbl").PivotFields("Дата ИО")
    pf233.CurrentPage = Replace(Format(Range("E4").Value, "dd.mm.yy"), ".", "/")
End Sub
 
Karataev,спасибо большое, все гениальное просто и коротко)))
Страницы: 1
Читают тему (гостей: 1)
Наверх