Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Изменение слайсера(среза) сводной таблицы кодом без перебора - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Изменение слайсера(среза) сводной таблицы кодом без перебора (Макросы/Sub)
Изменение слайсера(среза) сводной таблицы кодом без перебора
Glen Дата: Вторник, 26.10.2021, 13:23 | Сообщение № 1
Группа: Пользователи
Ранг: Участник
Сообщений: 94
Репутация: 10 ±
Замечаний: 0% ±

Excel 2010-16
Всем доброго дня!
Есть серьезные давно мучающий вопрос про слайсер в сводной
Во вложении совершенно абстрактный пример.
В зеленом поле выпадающий список дат. Выбираем дату, нажимаем желтую кнопку и в слайсере будут выбраны 3 значения.
1. Дата из зеленого поля
2. Дата из зеленого поля +1 день
3. Дата из зеленого поля + 2дня.
Код VBa устроен перебором значений в слайсере и проверкой на совпадение условия = дата или =дата+1 или = дата+2
Вроде все работает. Но перебор всех значений слайсера на живой сводной занимает кучу времени, при условии количества значений ну например >1000
Есть подозрение, что делать можно по другому
Как то бы вот через поле [vba]
Код
.VisibleSlicerItemsList = Array([d1],[d2],[d3])
[/vba]
Вопрос: Есть у кого готовый код по варианту №2 через Array. Сам уже много лет не могу ничего найти и использую этот долгий перебор.
К сообщению приложен файл: dDat.xlsm (21.7 Kb)


Пехаль киндриков куравь, пехаль киндриков лузнись.

Сообщение отредактировал Glen - Вторник, 26.10.2021, 13:41
 
Ответить
СообщениеВсем доброго дня!
Есть серьезные давно мучающий вопрос про слайсер в сводной
Во вложении совершенно абстрактный пример.
В зеленом поле выпадающий список дат. Выбираем дату, нажимаем желтую кнопку и в слайсере будут выбраны 3 значения.
1. Дата из зеленого поля
2. Дата из зеленого поля +1 день
3. Дата из зеленого поля + 2дня.
Код VBa устроен перебором значений в слайсере и проверкой на совпадение условия = дата или =дата+1 или = дата+2
Вроде все работает. Но перебор всех значений слайсера на живой сводной занимает кучу времени, при условии количества значений ну например >1000
Есть подозрение, что делать можно по другому
Как то бы вот через поле [vba]
Код
.VisibleSlicerItemsList = Array([d1],[d2],[d3])
[/vba]
Вопрос: Есть у кого готовый код по варианту №2 через Array. Сам уже много лет не могу ничего найти и использую этот долгий перебор.

Автор - Glen
Дата добавления - 26.10.2021 в 13:23
Pelena Дата: Вторник, 26.10.2021, 15:36 | Сообщение № 2
Группа: Админы
Ранг: Местный житель
Сообщений: 19182
Репутация: 4420 ±
Замечаний: ±

Excel 365 & Mac Excel
Здравствуйте.
Могу предложить вариант без среза. То есть сразу по зеленой дате работает фильтр в сводной.
[vba]
Код
    With ActiveSheet.PivotTables("СводнаяТаблица1").PivotFields("Дата")
        .ClearAllFilters
        .PivotFilters.Add2 Type:=xlDateBetween, Value1:=CStr([F2]), Value2:=CStr([F2] + 2)
    End With
[/vba]
Или поясните, почему именно срез?


"Черт возьми, Холмс! Но как??!!"
Ю-money 41001765434816
 
Ответить
СообщениеЗдравствуйте.
Могу предложить вариант без среза. То есть сразу по зеленой дате работает фильтр в сводной.
[vba]
Код
    With ActiveSheet.PivotTables("СводнаяТаблица1").PivotFields("Дата")
        .ClearAllFilters
        .PivotFilters.Add2 Type:=xlDateBetween, Value1:=CStr([F2]), Value2:=CStr([F2] + 2)
    End With
[/vba]
Или поясните, почему именно срез?

Автор - Pelena
Дата добавления - 26.10.2021 в 15:36
Glen Дата: Среда, 27.10.2021, 06:39 | Сообщение № 3
Группа: Пользователи
Ранг: Участник
Сообщений: 94
Репутация: 10 ±
Замечаний: 0% ±

Excel 2010-16
Pelena, добрый день
Спасибо. xlDateBetween отличное решение для последовательности дат(чисел).
Это я просто пример на датах построил.
А если бы это были, ну например цвета или текстовые артикулы. Ни один параметр из этого списка не подходит.
Вот мой вопрос и был про не связанную (не числовую) последовательность. Где только наборным методом Array можно что то скомпоновать в фильтре.
Есть у меня стойкое понимание, что умелыми руками можно через Array. Знать бы как?


Пехаль киндриков куравь, пехаль киндриков лузнись.
 
Ответить
СообщениеPelena, добрый день
Спасибо. xlDateBetween отличное решение для последовательности дат(чисел).
Это я просто пример на датах построил.
А если бы это были, ну например цвета или текстовые артикулы. Ни один параметр из этого списка не подходит.
Вот мой вопрос и был про не связанную (не числовую) последовательность. Где только наборным методом Array можно что то скомпоновать в фильтре.
Есть у меня стойкое понимание, что умелыми руками можно через Array. Знать бы как?

Автор - Glen
Дата добавления - 27.10.2021 в 06:39
Glen Дата: Среда, 27.10.2021, 06:46 | Сообщение № 4
Группа: Пользователи
Ранг: Участник
Сообщений: 94
Репутация: 10 ±
Замечаний: 0% ±

Excel 2010-16
Да, про срез
В файле срезом объединены 8-10 таблиц. И есть управляющий срез в котором что то выбирается. Он наглядно показывает что выбрано из все кучи. Удобно.
И я как то не заморачивался и почему то использовал метод перебора именно среза, а не поля в любой из этих 8-10 таблиц.
И Ваща идея про фильтрование прямого поля мне нравится больше.
Но все равно вопрос из Сообщения № 3 остается.


Пехаль киндриков куравь, пехаль киндриков лузнись.
 
Ответить
СообщениеДа, про срез
В файле срезом объединены 8-10 таблиц. И есть управляющий срез в котором что то выбирается. Он наглядно показывает что выбрано из все кучи. Удобно.
И я как то не заморачивался и почему то использовал метод перебора именно среза, а не поля в любой из этих 8-10 таблиц.
И Ваща идея про фильтрование прямого поля мне нравится больше.
Но все равно вопрос из Сообщения № 3 остается.

Автор - Glen
Дата добавления - 27.10.2021 в 06:46
Glen Дата: Среда, 27.10.2021, 07:43 | Сообщение № 5
Группа: Пользователи
Ранг: Участник
Сообщений: 94
Репутация: 10 ±
Замечаний: 0% ±

Excel 2010-16
Сейчас проверил код
[vba]
Код
    With ActiveSheet.PivotTables("СводнаяТаблица1").PivotFields("Дата")
        .ClearAllFilters
        .PivotFilters.Add2 Type:=xlDateBetween, Value1:=CStr([F2]), Value2:=CStr([F2] + 2)
    End With
[/vba]
Срез то мы скидываем и он потом не становится равным фильтру почемуто.
Т.е. если в связке из 8-10 таблиц в одной в конкретном поле что то поменять, то остальные таблицы, увязанные по этому полю в срезе, про такое изменение ни чего не знают.
А я чёт думал, что срез начнет меняться.
Там оказывается односторонняя зависимость. Срез меняет поле - поле не меняет срез.
А вот если вручную менять фильтр в сводной, то срез будет меняться.. делааа


Пехаль киндриков куравь, пехаль киндриков лузнись.

Сообщение отредактировал Glen - Среда, 27.10.2021, 07:47
 
Ответить
СообщениеСейчас проверил код
[vba]
Код
    With ActiveSheet.PivotTables("СводнаяТаблица1").PivotFields("Дата")
        .ClearAllFilters
        .PivotFilters.Add2 Type:=xlDateBetween, Value1:=CStr([F2]), Value2:=CStr([F2] + 2)
    End With
[/vba]
Срез то мы скидываем и он потом не становится равным фильтру почемуто.
Т.е. если в связке из 8-10 таблиц в одной в конкретном поле что то поменять, то остальные таблицы, увязанные по этому полю в срезе, про такое изменение ни чего не знают.
А я чёт думал, что срез начнет меняться.
Там оказывается односторонняя зависимость. Срез меняет поле - поле не меняет срез.
А вот если вручную менять фильтр в сводной, то срез будет меняться.. делааа

Автор - Glen
Дата добавления - 27.10.2021 в 07:43
Pelena Дата: Среда, 27.10.2021, 07:46 | Сообщение № 6
Группа: Админы
Ранг: Местный житель
Сообщений: 19182
Репутация: 4420 ±
Замечаний: ±

Excel 365 & Mac Excel
.VisibleSlicerItemsList работает только если добавить таблицы в модель данных (или для кубов OLAP)


"Черт возьми, Холмс! Но как??!!"
Ю-money 41001765434816


Сообщение отредактировал Pelena - Среда, 27.10.2021, 08:47
 
Ответить
Сообщение.VisibleSlicerItemsList работает только если добавить таблицы в модель данных (или для кубов OLAP)

Автор - Pelena
Дата добавления - 27.10.2021 в 07:46
Glen Дата: Среда, 27.10.2021, 07:59 | Сообщение № 7
Группа: Пользователи
Ранг: Участник
Сообщений: 94
Репутация: 10 ±
Замечаний: 0% ±

Excel 2010-16
Там оказывается односторонняя зависимость. Срез меняет поле - поле не меняет срез.

так, я понял. Прямой выбор значений в поле (т.е. расстановка галочек для значений) срез поменяет, а вот если использовать фильтры "фильтр по дате" или "фильтр по значению", то срез это не воспринимает и ни как не реагирует.
также и в VBA - использование, например xlDateBetween не будет менять срез.
т.е. PivotFilters.Add2 и срез не связаны. жаль.


Пехаль киндриков куравь, пехаль киндриков лузнись.
 
Ответить
Сообщение
Там оказывается односторонняя зависимость. Срез меняет поле - поле не меняет срез.

так, я понял. Прямой выбор значений в поле (т.е. расстановка галочек для значений) срез поменяет, а вот если использовать фильтры "фильтр по дате" или "фильтр по значению", то срез это не воспринимает и ни как не реагирует.
также и в VBA - использование, например xlDateBetween не будет менять срез.
т.е. PivotFilters.Add2 и срез не связаны. жаль.

Автор - Glen
Дата добавления - 27.10.2021 в 07:59
Pelena Дата: Среда, 27.10.2021, 08:46 | Сообщение № 8
Группа: Админы
Ранг: Местный житель
Сообщений: 19182
Репутация: 4420 ±
Замечаний: ±

Excel 365 & Mac Excel
.VisibleSlicerItemsList работает только если добавить таблицы в модель данных (или для кубов OLAP)

неправильно написала. Не .VisibleSlicerItemsList, а .VisibleItemsList
А вот уже .VisibleItemsList позволяет использовать массив


"Черт возьми, Холмс! Но как??!!"
Ю-money 41001765434816
 
Ответить
Сообщение
.VisibleSlicerItemsList работает только если добавить таблицы в модель данных (или для кубов OLAP)

неправильно написала. Не .VisibleSlicerItemsList, а .VisibleItemsList
А вот уже .VisibleItemsList позволяет использовать массив

Автор - Pelena
Дата добавления - 27.10.2021 в 08:46
Pelena Дата: Среда, 27.10.2021, 09:15 | Сообщение № 9
Группа: Админы
Ранг: Местный житель
Сообщений: 19182
Репутация: 4420 ±
Замечаний: ±

Excel 365 & Mac Excel
Смотрите, как это работает, если добавить таблицу в модель данных и на ней построить сводную
К сообщению приложен файл: 6793488.xlsm (87.4 Kb)


"Черт возьми, Холмс! Но как??!!"
Ю-money 41001765434816
 
Ответить
СообщениеСмотрите, как это работает, если добавить таблицу в модель данных и на ней построить сводную

Автор - Pelena
Дата добавления - 27.10.2021 в 09:15
Glen Дата: Среда, 27.10.2021, 10:03 | Сообщение № 10
Группа: Пользователи
Ранг: Участник
Сообщений: 94
Репутация: 10 ±
Замечаний: 0% ±

Excel 2010-16
Pelena, вот жеж крутизна крутая.
Работает мгновенно.
Именно этого я и хотел!!!!
Спасибо, дорогая, в 100мильенный раз!!


Пехаль киндриков куравь, пехаль киндриков лузнись.
 
Ответить
СообщениеPelena, вот жеж крутизна крутая.
Работает мгновенно.
Именно этого я и хотел!!!!
Спасибо, дорогая, в 100мильенный раз!!

Автор - Glen
Дата добавления - 27.10.2021 в 10:03
RAN Дата: Среда, 27.10.2021, 19:45 | Сообщение № 11
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
Работает мгновенно.

Работает в EXCEL 2010?


Быть или не быть, вот в чем загвоздка!
 
Ответить
Сообщение
Работает мгновенно.

Работает в EXCEL 2010?

Автор - RAN
Дата добавления - 27.10.2021 в 19:45
Glen Дата: Пятница, 29.10.2021, 05:51 | Сообщение № 12
Группа: Пользователи
Ранг: Участник
Сообщений: 94
Репутация: 10 ±
Замечаний: 0% ±

Excel 2010-16
RAN, скорее всего нет.
Модель данных появилась в 2013 версии
И кстати, модель данных это скрытый мир, о котором мало кто знает.
Был у меня в детстве опыт работы с OLAP кубами.
Но тогда по моей заявке специальные люди мне готовили заказанные поля, а теперь я и сам это могу делать. Только вот DAX формулы надо подтянуть.
Это просто космос, по сравнению с тем, чем занимаются 98% обычных пользователей Excel.
Pelena, огромное спасибо что ткнула меня сюда!!


Пехаль киндриков куравь, пехаль киндриков лузнись.
 
Ответить
СообщениеRAN, скорее всего нет.
Модель данных появилась в 2013 версии
И кстати, модель данных это скрытый мир, о котором мало кто знает.
Был у меня в детстве опыт работы с OLAP кубами.
Но тогда по моей заявке специальные люди мне готовили заказанные поля, а теперь я и сам это могу делать. Только вот DAX формулы надо подтянуть.
Это просто космос, по сравнению с тем, чем занимаются 98% обычных пользователей Excel.
Pelena, огромное спасибо что ткнула меня сюда!!

Автор - Glen
Дата добавления - 29.10.2021 в 05:51
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Изменение слайсера(среза) сводной таблицы кодом без перебора (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!