Страницы: 1
RSS
Фильтрация сводной таблицы макросом по текущей дате
 
Привет всем.
Столкнулась с небольшой с небольшой проблемой. В чем суть: есть сводная таблица с фильтром по дате, нужно чтобы  макрос копировал дату из ячейки (она сделана через =СЕГОДНЯ()-2) и фильтровал таблицу по этой дате или каким либо другим образом фильтровался на два дня назад от текущей даты.
А в чем проблема: макрос, записанный с помощью рекордера, понимает это слишком превратно и фильтрует только по той дате, которую я копировала на момент создания макроса, т.е. вставляет старое значение, а не скопированное.
Грубый пример во вложении, подскажите, пожалуйста, как можно было бы правильно сделать подобный макрос.
 
Код
Sub Макрос()
    With ActiveSheet.PivotTables("СводнаяТаблица10").PivotFields("Дата")
        .ClearAllFilters
        .CurrentPage = Date - 2
    End With
End Sub

Тема: фильтрация сводной таблицы макросом по текущей дате
Изменено: buchlotnik - 22.08.2019 08:14:16
Соблюдение правил форума не освобождает от модераторского произвола
 
Спасибо, именно то, что надо!
Изменено: Kabanofka - 22.08.2019 09:54:23
 
Kabanofka, вернитесь в своё сообщение и удалите то, что Вы ошибочно считаете цитатой.
 
Привет всем еще раз.
Теперь столкнулась немного с другой проблемой - макрорекордер выдает немного другой код для сводной таблицы, которая берет данные из OLAP-куба и аналогичным образом с Date - 2 сделать не получается. Пример того, как выглядит код из макрорекордера, если в нужном фильтре изменить дату:
Код
Sub ццц()
'
' йцу Макрос
'
'
    ActiveSheet.PivotTables("СводнаяТаблица1").PivotFields( _
        "[Дата отгрузки].[Дата отгрузки].[Дата отгрузки]").VisibleItemsList = Array( _
        "[Дата отгрузки].[Дата отгрузки].&[2019-08-12T00:00:00]")
    Application.WindowState = xlNormal
    Application.Left = 186.25
    Application.Top = 85.75
End Sub
В таком виде макрос не работает:
Код
Sub Макрос()
    With ActiveSheet.PivotTables("СводнаяТаблица1").PivotFields("Дата отгрузки")
        .ClearAllFilters
        .CurrentPage = Date - 2
    End With
End Sub
Получается ошибка
Run-time error 1004
Невозможно получить свойство PivotFields класса PivotTable
Ну и прилагаю скрин того, как выглядит фильтр таблицы.
Подскажите, пожалуйста, как можно было бы сделать фильтр в таком своднике на Date - 2
Спасибо.
 
Можно данные из куба грузить в модель данных Power Pivot, в нем сделать столбец с обратной ранжировкой по дате, и этот столбец затащить в фильтр сводной выбрав в нем значение "3". Каждый раз при обновлении данных этот столбец будет пересчитываться от максимальной даты в таблице. И не нужны макросы вообще.
З.Ы. кстати, можно такой столбец делать и в кубе, но это уже к вашим разрабам вопрос.
Изменено: PooHkrd - 26.08.2019 09:19:18
Вот горшок пустой, он предмет простой...
 
Цитата
PooHkrd написал:
Можно данные из куба грузить в модель данных Power Pivot, в нем сделать столбец с обратной ранжировкой по дате, и этот столбец затащить в фильтр сводной выбрав в нем значение "3". Каждый раз при обновлении данных этот столбец будет пересчитываться от максимальной даты в таблице. И не нужны макросы вообще.З.Ы. кстати, можно такой столбец делать и в кубе, но это уже к вашим разрабам вопрос.
Куб и сводники сами по себе очень "тяжелые", боюсь он будет вечность грузиться в рабочее время таким образом, хотелось бы именно посредством макроса провернуть фильтр по дате.
 
Kabanofka, вы же сводную в любом случае обновляете раз в день чтобы подгрузить свежие данные? Или нет? Вот в момент этой прогрузки и будет обновляться расчетная колонка и отфильтруется следующая дата.
Вот горшок пустой, он предмет простой...
 
Цитата
PooHkrd написал:
Kabanofka , вы же сводную в любом случае обновляете раз в день чтобы подгрузить свежие данные? Или нет? Вот в момент этой прогрузки и будет обновляться расчетная колонка и отфильтруется следующая дата.
В том и дело, что макрос был нужен для того, чтобы не обновлять сводную самой, а макрос запускался через задачи утром сам.
Может быть кто-то знает как к примеру с кубом выше сделать аналогичный макрос с "Date-2"?
Подскажите, пожалуйста.
Страницы: 1
Наверх