2010-08-27 3 views
1

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

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

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

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

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

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

ответ

1

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

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

+0

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

0

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

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

0

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

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