Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.77/35: Рейтинг темы: голосов - 35, средняя оценка - 4.77
0 / 0 / 0
Регистрация: 30.04.2013
Сообщений: 21
1

Множественный выбор в сводной таблице OLAP макросом

31.05.2013, 15:10. Показов 7179. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый день, друзья. Речь пойдет о базе данных OLAP и о макросах. Задача следующая:

1. Начну с того, что есть. С пустыми руками и без идей что-то спрашивать не совсем удобно.


У нас имеется сводная таблица из OLAP, в ней выгружатся элементы и их количество в зависимости от выставленной нами даты.
Так, например, я писал макрос, когда выставлял два определенных дня ( 29.05.2013 и 30.05.2013)
Множественный выбор в сводной таблице OLAP макросом


Visual Basic
1
2
3
4
Private Sub UserForm_Initialize()
TextBox1.Text = (Format(Date, "yyyy-mm-dd"))
TextBox2.Text = (Format(Date, "yyyy-mm-dd"))
End Sub
'Теперь можно указанные даты записать в перменную

Visual Basic
1
2
3
4
5
Private Sub CommandButton1_Click()
 
Dim x, y
x = TextBox1.Text
y = TextBox2.Text

'Далее вставляем нашу переменную в програмный код, там где указывается дата:

Visual Basic
1
2
3
4
  Sheets("Лист").PivotTables("Своднаятаблица").PivotFields( _
        "[Календарь].[Месяцы].[День]").VisibleItemsList = Array( _
        "[Календарь].[Месяцы].[День].&[[B]" & x & "[/B]T00:00:00]", _
        "[Календарь].[Месяцы].[День].&[[B]" & y & "[/B]T00:00:00]")
Добавлю, что вручную программный код выглядил бы так:

Visual Basic
1
2
3
4
    Sheets("Лист").PivotTables("Своднаятаблица").PivotFields( _
        "[Календарь].[Месяцы].[День]").VisibleItemsList = Array( _
        "[Календарь].[Месяцы].[День].&[2013-05-29T00:00:00]", _
        "[Календарь].[Месяцы].[День].&[2013-05-30T00:00:00]")


2. Теперь о том, что мне необходимо.

У нас имеется сводная таблица из OLAP, в ней выгружатся элементы и их количество в зависимости от выставленной нами даты. Раньше я выставлял два определенных дня ( 29.05.2013 и 30.05.2013). Теперь появилась необходимость указывать более длинные периоды, например с 29.05.2013 по 15.06.2013. Возможно понадобится цикл, либо массив.

не мало важно сказать, что задача облегчается тем, что этот период будет не прерывным, т.е. все числа от начала до конца периода. Подскажите пожалуйста, решение этой задачи? Большое аналитическое спасибо!!))

Множественный выбор в сводной таблице OLAP макросом
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
31.05.2013, 15:10
Ответы с готовыми решениями:

Макросом развернуть все поля в сводной таблице
Подскажите как макросов развернуть все поля в сводной таблице. Спасибо!

Выбор диапазона дат в сводной таблице (автофильтр)
Доброго дня! Имею в наличии обновляющиеся сводные таблицы. Задача - выбирать данные за...

Удаление сводной таблицы макросом
Здравствуйте! Часто бывает что нужно удалить или преобразовать сводную таблицу. Пример, есть...

Фильтр в сводной таблице
Приветствую! Подскажите как сделать фильтр по определенному значению в сводной таблице, например...

2
3218 / 967 / 223
Регистрация: 29.05.2010
Сообщений: 2,087
31.05.2013, 16:17 2
В OLAP слаб, но вот пример в Excel, пристрой к своим данным, если устроит такой подход.
Вложения
Тип файла: zip от Toiai диапазон в сводной таблице.zip (460.0 Кб, 69 просмотров)
0
0 / 0 / 0
Регистрация: 30.04.2013
Сообщений: 21
03.06.2013, 13:45  [ТС] 3
Мне нужно только помочь разобраться с массивом и циклом. Я опишу программный код и условия очень подробно.

Имеем мы это:

Visual Basic
1
2
TextBox1.Text = (Format(Date, "yyyy-mm-dd"))
TextBox2.Text = (Format(Date + 1, "yyyy-mm-dd"))
(В наших двух текстбоксах зададим формат даты, чтобы её беспрепятственно использовать в тексте кода.)

Visual Basic
1
2
x = TextBox1.Text
y = TextBox2.Text
(Запишем начало даты в x, а конец в y)


Вставим переменные в код.
В нем есть не изменяемая часть:

Sheets("Лист").PivotTables("Своднаятаблица").PivotFields( "[Календарь].[Месяцы].[День]").VisibleItemsList = Array( )

В самом Array нужные нам данные через запятую идут:

Visual Basic
1
2
 "[Календарь].[Месяцы].[День].&[" & x & "T00:00:00]", 
"[Календарь].[Месяцы].[День].&[" & y & "T00:00:00]",
В которых меняется только значения x и y. Вообще чтобы вставить каждую новую дату в OLAP необходимо постоянно добавлять строчку с датами
Visual Basic
1
2
3
4
 "[Календарь].[Месяцы].[День].&[" & data1 & "T00:00:00]"
"[Календарь].[Месяцы].[День].&[" & data2 & "T00:00:00]".
"[Календарь].[Месяцы].[День].&[" & data3 & "T00:00:00]".
"[Календарь].[Месяцы].[День].&[" & data4 & "T00:00:00]".

Итог:

Мне необходимо придумать такой цикл и массив данных, чтобы я получил

Visual Basic
1
2
"[Календарь].[Месяцы].[День].&[" & x & "T00:00:00]", 
"[Календарь].[Месяцы].[День].&[" & x + 1 & "T00:00:00]"
,

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

Visual Basic
1
 "[Календарь].[Месяцы].[День].&[" & y & "T00:00:00]"
.
0
03.06.2013, 13:45
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
03.06.2013, 13:45
Помогаю со студенческими работами здесь

Фильтр в сводной таблице
Добрый день! Есть сводная таблица с полем (пунктов много) Необходимо выбрать 2 позиции. При...

Количество столбцов в сводной таблице
Здравствуйте! У меня есть код который более менее работает. Используется для сведения данных из...

Обратное действие сводной таблице
Помогите, пожалуйста. Задана таблица на листе 1, нужно получить таблицу как на листе 2 Заранее...

Перебор отфильтрованных значений в сводной таблице
Добрый день, Подскажите, пжл, как можно выбрать отфильтрованные значения в сводной таблице. В...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru