Как отфильтровать даты по формуле ячейки в сводной таблице Excel? - PullRequest
1 голос
/ 27 августа 2010

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

Есть две проблемы, которые яне удалось пройти:

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

  2. Похоже, что определить диапазон дат можно только в том случае, если я группирую данные по полю даты.Для некоторых отчетов это нарушает спецификацию.Кажется, что раздел «Фильтр отчетов» в сводной таблице позволяет фильтровать только по отдельным значениям, а не по диапазону.Это становится неуправляемым для реальных данных, которые могут проходить через сотни дат.

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

У кого-нибудь есть идеи, как мне это сделать?Кажется, это довольно очевидный вариант использования - я что-то упускаю из-за того, как предполагается использовать сводные таблицы?

Ответы [ 3 ]

1 голос
/ 27 августа 2010

Самое простое, что вы можете сделать, это изменить запрос сводной таблицы на лету.

Когда исходная ячейка изменяется (событие Worksheet_Changed), добавьте " AND WhateverDate > '1/1/1111'" к Me.PivotTables("Your pivot").PivotCache.CommandText и обновите сводку.

0 голосов
/ 11 мая 2016

Это уже давно умерло, но я думал, что выложу другой метод.добавьте формулу в исходную таблицу, которая возвращает «1» для того, что вы хотите, и «0» для того, чего вы не хотите, а затем добавьте фильтр в сводную таблицу, который фильтрует только «1».

0 голосов
/ 27 августа 2010

Я помню, что несколько лет назад я выполнил аналогичное требование, сделав динамический запрос SQL (т. Е. Собрав его в виде строки в VBA и используя ячейки со значениями диапазона в условии where).Затем вызывается макрос VBA с помощью кнопки «обновить».

Но я сожалею, что этот код больше не доступен, я просто помню общую идею.

...