2013-11-18 8 views
1

Как автоматизировать проверку/снятие даты в отчетном отчете о сводной таблице?Изменение диапазонов дат в сводной таблице

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

Pivot Table Checkboxes

Я хотел бы иметь поле с датой в ней, а затем запустить макрос, который пересматривает выбранные даты на основе этой даты. например Введите «11/11» в ячейке A1 и установите флажки для диапазона дат 4-10 ноября для некоторых таблиц, а диапазон дат 28 октября - 3 ноября проверяется для других. Затем на следующей неделе я смог обновить A1 с новой датой и перейти оттуда.

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

ActiveSheet.PivotTables(ptNameA20).TableRange1.Select 
ActiveSheet.PivotTables(ptNameA20).PivotFields(_ 
    "[Date].[Date Hierarchy].[Year]").VisibleItemsList = Array("") 
ActiveSheet.PivotTables(ptNameA20).PivotFields(_ 
    "[Date].[Date Hierarchy].[Quarter]").VisibleItemsList = Array("") 
ActiveSheet.PivotTables(ptNameA20).PivotFields(_ 
    "[Date].[Date Hierarchy].[Month]").VisibleItemsList = Array("") 
ActiveSheet.PivotTables(ptNameA20).PivotFields(_ 
    "[Date].[Date Hierarchy].[Day]").VisibleItemsList = Array(_ 
    "[Date].[Date Hierarchy].[Day].&[2013-11-04T00:00:00]", _ 
    "[Date].[Date Hierarchy].[Day].&[2013-11-05T00:00:00]", _ 
    "[Date].[Date Hierarchy].[Day].&[2013-11-06T00:00:00]", _ 
    "[Date].[Date Hierarchy].[Day].&[2013-11-07T00:00:00]", _ 
    "[Date].[Date Hierarchy].[Day].&[2013-11-08T00:00:00]", _ 
    "[Date].[Date Hierarchy].[Day].&[2013-11-09T00:00:00]", _ 
    "[Date].[Date Hierarchy].[Day].&[2013-11-10T00:00:00]")` 

Я попытался с помощью петель, чтобы генерировать такие строки, как «2013-11-04», «2013-11-05», и т.д ... и затем строит длинную строку (охватывающую в «день» линии). Однако я не могу использовать результат, за исключением того, что вставляя их в макрос (вставляя блок текста на предыдущей неделе). Это приводит к большому количеству копировании и вставке, в то же время беспокоясь о перезаписи неправильной сводной таблицы. Это лучше, чем ручная проверка и снятие флажков, но все еще не очень хорошая.

Я использую Excel 2010. N.B. Я спросил об этом в SuperUser, но не получил никаких ответов.

+0

Если вы будете группирования на неделю? – pnuts

+0

Мне нужны данные ежедневно (т. Е. Создавать граф, который показывает данные за каждый день недели). Кроме того, группировка по неделям недоступна в фильтре отчета. Насколько я понимаю, он доступен только в ярлыках строк. – mockman

ответ

0

Хотя я не могу получить какое-либо представление о решении VBA для этой проблемы, я нашел альтернативу, которая должна быть столь же быстрой в использовании (и быстрее реализовать).

Срезы

Добавляя два ломтерезки (по одному для каждого из последних двух недель), я могу выбрать диапазон дат с клик-сопротивления. Один из них добавлен в лист, их можно подключить к нескольким сводным таблицам, даже если они распределены по нескольким листам. Они также могут быть отформатированы в цвете для соответствия сводным таблицам, к которым они подключаются.

Примечание: Если у кого-то есть какие-либо рекомендации относительно решения VBA, я бы по достоинству оценил их вид.

С сайта Microsoft: Use slicers to filter PivotTable data

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