Страницы: 1
RSS
Размер графика под размер экрана и умный фильтр
 
Коллеги, добрый день!

Описание ситуации.
Есть куб olap, собирающий ежедневные обороты по партнерам. Партнеров много, есть необходимость отсматривать глазами графики по топ 200. На основе этих данных строю 4 графика (по 1 долго просматривать), стоящих в 2 ряда по 2. Тут все стандартно, динамические диапазоны+смещ+полоса прокрутки для красоты.

Есть 2 проблемы:
1. Т.к. среди партнеров много внутренних и иных, которые не нужно смотреть, приходится вначале глазами отсматриривать список и потом через фильтр+"Добавить выделенный фрагмент в фильтр" по одному добавляю только нужные, что отнимает много времени. Приходится раз в месяц-два руками пробегаться по всему списку и удалять ненужное\добавлять новое.
Можно макросом вставить список?
Пробовал записать, получилось:
Код
    ActiveSheet.PivotTables("Своднаятаблица1").PivotFields( _
        "[Получатели].[Получатели].[Тип получателя]").VisibleItemsList = Array("")
    ActiveSheet.PivotTables("Своднаятаблица1").PivotFields( _
        "[Получатели].[Получатели].[Группа магазинов]").VisibleItemsList = Array("")
    ActiveSheet.PivotTables("Своднаятаблица1").PivotFields( _
        [Получатели].[Получатели].[Магазин]).VisibleItemsList = Array( _
        [Получатели].[Получатели].[Тип получателя].&[1].&[8].&[2566]&[1]")
    ActiveSheet.PivotTables("Своднаятаблица1").PivotFields( _
        [Получатели].[Получатели].[Товар]).VisibleItemsList = Array("")
Имена магазинов имеют вид "[12345] Нечто". Удобно было бы в диалоговое тесктовое окошко копировать список цифровых айдишников для фильтрации. Пробовал макрос погуглить, к примеу тут, но как-то не вышло для моего случая.

2. Графики есть необходимость раздать по отделу, но у всех разные мониторы, а иногда ноутбуки в 13-14 дюймов и хочется, чтобы размеры графиков (ширина\высота или масштаб? не знаю что в данном случае правильней) подстраивать под экран. Такое возможно?
Попутно сделаю макрос скрывающий все меню при открытии файла, чтобы места свободного побольше было.

Привести пример к сожалению не могу, т.к. там фин. показатели.
 
по второму пункту "получить разрешение монитора" (не моё):
Код
Declare Function GetSystemMetrics Lib "user32" (ByVal nIndex As Long) As Long 'Объявление API-функции
' Константы, которые передаются в функцию для определения горизонтального и вертикального размеров изображения:
Const SM_CXSCREEN = 0
Const SM_CYSCREEN = 1
Sub GetMonitorResolution()
Dim lngHorzRes As Long
Dim lngVertRes As Long
lngHorzRes = GetSystemMetrics(SM_CXSCREEN)
lngVertRes = GetSystemMetrics(SM_CYSCREEN)
MsgBox "Текущее разрешение: " & lngHorzRes & " x " & lngVertRes
End Sub
Затем у графиков .ScaleWidth и .ScaleHeight подгонять под полученное разрешение
Удивление есть начало познания © Surprise me!
И да пребудет с нами сила ВПР.
Страницы: 1
Наверх