powered by simpleCommunicator - 2.0.38     © 2025 Programmizd 02
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / SlicerCaches. Ускорить отбор
7 сообщений из 7, страница 1 из 1
SlicerCaches. Ускорить отбор
    #39757866
ferzmikk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здравствуйте!

Есть сводная таблица и срез "Дата". В срезе нужно программно отобрать дни текущего месяца. Вот макрос, который выполняет такую задачу.
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
    For Each el In Thisworkbook.SlicerCaches("Срез_Дата2").SlicerItems
        If Month(CDate(el.Name)) = Month(Date) And Year(CDate(el.Name)) = Year(Date) Then
            el.Selected = True
        Else
            el.Selected = False
        End If
    Next el


Но выполняется очень долго.

Как можно ускорить?
...
Рейтинг: 0 / 0
SlicerCaches. Ускорить отбор
    #39758022
ferzmikk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Такая запись не помогает
Код: vbnet
1.
2.
3.
4.
PT(3).ManualUpdate = True
...
PT(3).ManualUpdate = False
PT(3).ManualUpdate = True
...
Рейтинг: 0 / 0
SlicerCaches. Ускорить отбор
    #39758308
iMrTidy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ferzmikk,

Ускорить можно. Операции с манипуляциями данных делать в памяти, а не напрямую в ячейках. При публикации данных обратно в ячейки отключить обновление экрана и автопересчет листа.
...
Рейтинг: 0 / 0
SlicerCaches. Ускорить отбор
    #39758333
Фотография The_Prist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iMrTidyОперации с манипуляциями данных делать в памяти, а не напрямую в ячейкахЗдесь речь про срезы(Slicer), а он не завязан на ячейки. И при каждом изменении идет перестроение сводной, поэтому и так долго.
Куда правильнее в этой ситуации использовать стандартный фильтр сводной(он завязан на срезы). Сначала удаляем:
Код: vbnet
1.
ActiveSheet.PivotTables("Сводная таблица").PivotFields("Поле для фильтрации").ClearAllFilters


а потом накатываем нужные.

P.S. ferzmikk, у меня в очередной раз этот вопрос к Вам: Вы когда темы создаете Вы за ними следите вообще? Или создали и фиг с ней? :) В который раз уже замечаю, что обсуждение в некоторых Ваших темах есть, а Вы никак не реагируете на это. Правила хорошего тона вроде как предписывают хоть какой-то ответ давать, если предложили новое решение задачи: помогло-не помогло.
...
Рейтинг: 0 / 0
SlicerCaches. Ускорить отбор
    #39758404
ferzmikk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
The_PristP.S. ferzmikk, у меня в очередной раз этот вопрос к Вам: Вы когда темы создаете Вы за ними следите вообще? Или создали и фиг с ней? :) В который раз уже замечаю, что обсуждение в некоторых Ваших темах есть, а Вы никак не реагируете на это. Правила хорошего тона вроде как предписывают хоть какой-то ответ давать, если предложили новое решение задачи: помогло-не помогло.
За темой слежу. Созданные темы актуальные для меня. Спасибо за замечание! Учту!
...
Рейтинг: 0 / 0
SlicerCaches. Ускорить отбор
    #39760159
ferzmikk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
The_PristiMrTidyОперации с манипуляциями данных делать в памяти, а не напрямую в ячейкахЗдесь речь про срезы(Slicer), а он не завязан на ячейки. И при каждом изменении идет перестроение сводной, поэтому и так долго.
Куда правильнее в этой ситуации использовать стандартный фильтр сводной(он завязан на срезы). Сначала удаляем:
Код: vbnet
1.
ActiveSheet.PivotTables("Сводная таблица").PivotFields("Поле для фильтрации").ClearAllFilters


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

Но обратил внимание, что в фильтре отобраны некоторые элементы, а в срезе выделены все элементы. Пользователи же могут запутаться: раз в срезе выделены все элементы, то подумают, что вся выборка.
...
Рейтинг: 0 / 0
SlicerCaches. Ускорить отбор
    #39760240
Фотография The_Prist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ferzmikkдни выбирает не в срезе, а в фильтре. Потом вставляет срезСначала вставить срез, потом фильтры накатить.
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / SlicerCaches. Ускорить отбор
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]