На листе несколько сводных таблиц. Исходные данные на другом. Как сделать чтобы при изменении исходных данных автоматически обновлялись все сводные таблицы?
Как автоматически обновлять сводные таблицы?
08.02.2008 23:54:29
|
|
|
|
08.02.2008 23:54:29
На листе несколько сводных таблиц. Исходные данные на другом. Как сделать чтобы при изменении исходных данных автоматически обновлялись все сводные таблицы?
|
|
|
|
11.02.2008 13:33:02
спасибо,Лузер!
|
|
|
|
27.07.2012 09:33:33
Подскажите, пожалуйста, по автоматическому обновлению сводных при изменении данных на текущем листе:
1) обновляю 6 сводных таблиц, источником данных для которых являются 2 листа (~10k строк на лист), следующим кодом: Private Sub Worksheet_Change(ByVal Target As Range) Worksheets("pivot_sheet1").PivotTables("pivot1_1").PivotCache.Refresh Worksheets("pivot_sheet1").PivotTables("pivot1_2").PivotCache.Refresh Worksheets("pivot_sheet1").PivotTables("pivot1_3").PivotCache.Refresh Worksheets("pivot_sheet2").PivotTables("pivot2_1").PivotCache.Refresh Worksheets("pivot_sheet2").PivotTables("pivot2_2").PivotCache.Refresh Worksheets("pivot_sheet2").PivotTables("pivot2_3").PivotCache.Refresh End Sub Возможно можно как-то оптимизировать и ускорить обновление? Поиском нашел тему про принудительное использование одного кэша для всех сводных таблиц, но не смог применить это к нескольким источникам сводных: 2) как задать обновление только при изменении а)определенной ячееки б)диапазона(выделен желтым в примере) в)столбца, так как сейчас все обновляется при изменении любой ячейки листа, что несколько неудобно. зы: на всякий случай пример во вложении |
|
|
|
29.07.2012 07:27:10
по первому вопросу:
обратите внимание, что у обработчика события Worksheet_Change есть аргумент - ByVal Target As Range. если ваша справка по VBA перестала быть бесплатной или другие какие капризы у неё в данный момент, то я вам поясняю: это как раз и есть ссылка на ячейку или диапазон, изменение значения в которой (котором) вызвало данный обработчик. для решения вашей задачи нужно анализировать (проверять) этот диапазон на пересечение с нужным вам диапазоном и, в зависимости от результата сравнения выполнять те или иные действия (или не выполнять никакие) например: а) if not intersect(target, me.[b3]) is nothing then ... б) if not intersect(target, me.[b3:c4]) is nothing then ... в) if not intersect(target, me.columns(2)) is nothing then ... ps всё-таки рекомендую один раз заплатить справке, чем мучиться :)
фрилансер Excel, VBA - контакты в
"Совершенствоваться не обязательно. Выживание — дело добровольное." Э.Деминг |
|
|
|
29.07.2012 08:18:53
|
|
|
|
02.08.2012 02:11:06
ikki, Serge 007
Спасибо Я бы с удовольствием почитал справку по VBA, но к сожалению на данном этапе я мало что там пойму, а так я только за самобразование ) Еще раз спасибо! |
|
|
|
08.08.2012 11:14:35
у меня не получается вставить код обновления всех данных в книге при изменении данных в исходном листе: после ввода данных вылезает вот что:
|
|
|
|
08.08.2012 11:16:55
Потому что эта процедура уже описана выше.
|
|
|
|
08.08.2012 11:25:05
но все равно не работают варианты -:((
|
|
|
|
08.08.2012 11:29:39
...
Учимся сами и помогаем другим...
|
|
|
|
08.08.2012 11:40:54
Получилось все!!!!!!!!!!
только эту строчку сунуть пришлось не после End If, а в начале всех записей, иначе первый макрос не работал! очень большое спасибо!!!! |
||||
|
|
|||
Читают тему