Всем доброго дня! Есть серьезные давно мучающий вопрос про слайсер в сводной Во вложении совершенно абстрактный пример. В зеленом поле выпадающий список дат. Выбираем дату, нажимаем желтую кнопку и в слайсере будут выбраны 3 значения. 1. Дата из зеленого поля 2. Дата из зеленого поля +1 день 3. Дата из зеленого поля + 2дня. Код VBa устроен перебором значений в слайсере и проверкой на совпадение условия = дата или =дата+1 или = дата+2 Вроде все работает. Но перебор всех значений слайсера на живой сводной занимает кучу времени, при условии количества значений ну например >1000 Есть подозрение, что делать можно по другому Как то бы вот через поле [vba]
Код
.VisibleSlicerItemsList = Array([d1],[d2],[d3])
[/vba] Вопрос: Есть у кого готовый код по варианту №2 через Array. Сам уже много лет не могу ничего найти и использую этот долгий перебор.
Всем доброго дня! Есть серьезные давно мучающий вопрос про слайсер в сводной Во вложении совершенно абстрактный пример. В зеленом поле выпадающий список дат. Выбираем дату, нажимаем желтую кнопку и в слайсере будут выбраны 3 значения. 1. Дата из зеленого поля 2. Дата из зеленого поля +1 день 3. Дата из зеленого поля + 2дня. Код VBa устроен перебором значений в слайсере и проверкой на совпадение условия = дата или =дата+1 или = дата+2 Вроде все работает. Но перебор всех значений слайсера на живой сводной занимает кучу времени, при условии количества значений ну например >1000 Есть подозрение, что делать можно по другому Как то бы вот через поле [vba]
Код
.VisibleSlicerItemsList = Array([d1],[d2],[d3])
[/vba] Вопрос: Есть у кого готовый код по варианту №2 через Array. Сам уже много лет не могу ничего найти и использую этот долгий перебор.Glen
Здравствуйте. Могу предложить вариант без среза. То есть сразу по зеленой дате работает фильтр в сводной. [vba]
Код
With ActiveSheet.PivotTables("СводнаяТаблица1").PivotFields("Дата") .ClearAllFilters .PivotFilters.Add2 Type:=xlDateBetween, Value1:=CStr([F2]), Value2:=CStr([F2] + 2) End With
[/vba] Или поясните, почему именно срез?
Здравствуйте. Могу предложить вариант без среза. То есть сразу по зеленой дате работает фильтр в сводной. [vba]
Код
With ActiveSheet.PivotTables("СводнаяТаблица1").PivotFields("Дата") .ClearAllFilters .PivotFilters.Add2 Type:=xlDateBetween, Value1:=CStr([F2]), Value2:=CStr([F2] + 2) End With
Pelena, добрый день Спасибо. xlDateBetween отличное решение для последовательности дат(чисел). Это я просто пример на датах построил. А если бы это были, ну например цвета или текстовые артикулы. Ни один параметр из этого списка не подходит. Вот мой вопрос и был про не связанную (не числовую) последовательность. Где только наборным методом Array можно что то скомпоновать в фильтре. Есть у меня стойкое понимание, что умелыми руками можно через Array. Знать бы как?
Pelena, добрый день Спасибо. xlDateBetween отличное решение для последовательности дат(чисел). Это я просто пример на датах построил. А если бы это были, ну например цвета или текстовые артикулы. Ни один параметр из этого списка не подходит. Вот мой вопрос и был про не связанную (не числовую) последовательность. Где только наборным методом Array можно что то скомпоновать в фильтре. Есть у меня стойкое понимание, что умелыми руками можно через Array. Знать бы как?Glen
Да, про срез В файле срезом объединены 8-10 таблиц. И есть управляющий срез в котором что то выбирается. Он наглядно показывает что выбрано из все кучи. Удобно. И я как то не заморачивался и почему то использовал метод перебора именно среза, а не поля в любой из этих 8-10 таблиц. И Ваща идея про фильтрование прямого поля мне нравится больше. Но все равно вопрос из Сообщения № 3 остается.
Да, про срез В файле срезом объединены 8-10 таблиц. И есть управляющий срез в котором что то выбирается. Он наглядно показывает что выбрано из все кучи. Удобно. И я как то не заморачивался и почему то использовал метод перебора именно среза, а не поля в любой из этих 8-10 таблиц. И Ваща идея про фильтрование прямого поля мне нравится больше. Но все равно вопрос из Сообщения № 3 остается.Glen
With ActiveSheet.PivotTables("СводнаяТаблица1").PivotFields("Дата") .ClearAllFilters .PivotFilters.Add2 Type:=xlDateBetween, Value1:=CStr([F2]), Value2:=CStr([F2] + 2) End With
[/vba] Срез то мы скидываем и он потом не становится равным фильтру почемуто. Т.е. если в связке из 8-10 таблиц в одной в конкретном поле что то поменять, то остальные таблицы, увязанные по этому полю в срезе, про такое изменение ни чего не знают. А я чёт думал, что срез начнет меняться. Там оказывается односторонняя зависимость. Срез меняет поле - поле не меняет срез. А вот если вручную менять фильтр в сводной, то срез будет меняться.. делааа
Сейчас проверил код [vba]
Код
With ActiveSheet.PivotTables("СводнаяТаблица1").PivotFields("Дата") .ClearAllFilters .PivotFilters.Add2 Type:=xlDateBetween, Value1:=CStr([F2]), Value2:=CStr([F2] + 2) End With
[/vba] Срез то мы скидываем и он потом не становится равным фильтру почемуто. Т.е. если в связке из 8-10 таблиц в одной в конкретном поле что то поменять, то остальные таблицы, увязанные по этому полю в срезе, про такое изменение ни чего не знают. А я чёт думал, что срез начнет меняться. Там оказывается односторонняя зависимость. Срез меняет поле - поле не меняет срез. А вот если вручную менять фильтр в сводной, то срез будет меняться.. делаааGlen
Там оказывается односторонняя зависимость. Срез меняет поле - поле не меняет срез.
так, я понял. Прямой выбор значений в поле (т.е. расстановка галочек для значений) срез поменяет, а вот если использовать фильтры "фильтр по дате" или "фильтр по значению", то срез это не воспринимает и ни как не реагирует. также и в VBA - использование, например xlDateBetween не будет менять срез. т.е. PivotFilters.Add2 и срез не связаны. жаль.
Там оказывается односторонняя зависимость. Срез меняет поле - поле не меняет срез.
так, я понял. Прямой выбор значений в поле (т.е. расстановка галочек для значений) срез поменяет, а вот если использовать фильтры "фильтр по дате" или "фильтр по значению", то срез это не воспринимает и ни как не реагирует. также и в VBA - использование, например xlDateBetween не будет менять срез. т.е. PivotFilters.Add2 и срез не связаны. жаль.Glen
RAN, скорее всего нет. Модель данных появилась в 2013 версии И кстати, модель данных это скрытый мир, о котором мало кто знает. Был у меня в детстве опыт работы с OLAP кубами. Но тогда по моей заявке специальные люди мне готовили заказанные поля, а теперь я и сам это могу делать. Только вот DAX формулы надо подтянуть. Это просто космос, по сравнению с тем, чем занимаются 98% обычных пользователей Excel. Pelena, огромное спасибо что ткнула меня сюда!!
RAN, скорее всего нет. Модель данных появилась в 2013 версии И кстати, модель данных это скрытый мир, о котором мало кто знает. Был у меня в детстве опыт работы с OLAP кубами. Но тогда по моей заявке специальные люди мне готовили заказанные поля, а теперь я и сам это могу делать. Только вот DAX формулы надо подтянуть. Это просто космос, по сравнению с тем, чем занимаются 98% обычных пользователей Excel. Pelena, огромное спасибо что ткнула меня сюда!!Glen