Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft Office Новый топик    Ответить
 SlicerCaches. Ускорить отбор  [new]
ferzmikk
Member

Откуда:
Сообщений: 1647
Здравствуйте!

Есть сводная таблица и срез "Дата". В срезе нужно программно отобрать дни текущего месяца. Вот макрос, который выполняет такую задачу.
    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

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

Как можно ускорить?
10 янв 19, 13:41    [21781586]     Ответить | Цитировать Сообщить модератору
 Re: SlicerCaches. Ускорить отбор  [new]
ferzmikk
Member

Откуда:
Сообщений: 1647
Такая запись не помогает
PT(3).ManualUpdate = True
...
PT(3).ManualUpdate = False
PT(3).ManualUpdate = True
10 янв 19, 16:25    [21781863]     Ответить | Цитировать Сообщить модератору
 Re: SlicerCaches. Ускорить отбор  [new]
iMrTidy
Member

Откуда:
Сообщений: 702
ferzmikk,

Ускорить можно. Операции с манипуляциями данных делать в памяти, а не напрямую в ячейках. При публикации данных обратно в ячейки отключить обновление экрана и автопересчет листа.
11 янв 19, 10:43    [21782513]     Ответить | Цитировать Сообщить модератору
 Re: SlicerCaches. Ускорить отбор  [new]
The_Prist
Member

Откуда: www.excel-vba.ru
Сообщений: 1808
iMrTidy
Операции с манипуляциями данных делать в памяти, а не напрямую в ячейках
Здесь речь про срезы(Slicer), а он не завязан на ячейки. И при каждом изменении идет перестроение сводной, поэтому и так долго.
Куда правильнее в этой ситуации использовать стандартный фильтр сводной(он завязан на срезы). Сначала удаляем:
ActiveSheet.PivotTables("Сводная таблица").PivotFields("Поле для фильтрации").ClearAllFilters

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

P.S. ferzmikk, у меня в очередной раз этот вопрос к Вам: Вы когда темы создаете Вы за ними следите вообще? Или создали и фиг с ней? :) В который раз уже замечаю, что обсуждение в некоторых Ваших темах есть, а Вы никак не реагируете на это. Правила хорошего тона вроде как предписывают хоть какой-то ответ давать, если предложили новое решение задачи: помогло-не помогло.
11 янв 19, 11:05    [21782546]     Ответить | Цитировать Сообщить модератору
 Re: SlicerCaches. Ускорить отбор  [new]
ferzmikk
Member

Откуда:
Сообщений: 1647
The_Prist
P.S. ferzmikk, у меня в очередной раз этот вопрос к Вам: Вы когда темы создаете Вы за ними следите вообще? Или создали и фиг с ней? :) В который раз уже замечаю, что обсуждение в некоторых Ваших темах есть, а Вы никак не реагируете на это. Правила хорошего тона вроде как предписывают хоть какой-то ответ давать, если предложили новое решение задачи: помогло-не помогло.

За темой слежу. Созданные темы актуальные для меня. Спасибо за замечание! Учту!
11 янв 19, 13:05    [21782728]     Ответить | Цитировать Сообщить модератору
 Re: SlicerCaches. Ускорить отбор  [new]
ferzmikk
Member

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

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

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

Но обратил внимание, что в фильтре отобраны некоторые элементы, а в срезе выделены все элементы. Пользователи же могут запутаться: раз в срезе выделены все элементы, то подумают, что вся выборка.
16 янв 19, 10:40    [21786473]     Ответить | Цитировать Сообщить модератору
 Re: SlicerCaches. Ускорить отбор  [new]
The_Prist
Member

Откуда: www.excel-vba.ru
Сообщений: 1808
ferzmikk
дни выбирает не в срезе, а в фильтре. Потом вставляет срез
Сначала вставить срез, потом фильтры накатить.
16 янв 19, 13:00    [21786639]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft Office Ответить