Као што сви знамо, кад год унесемо промене у изворне податке изведене табеле, то се не одражава одмах у изведеној табели. Морамо да освежимо изведене табеле да бисмо видели промене. А ако пошаљете ажурирану датотеку без освежавања изведених табела, можда ћете се осећати неугодно.
Дакле, у овом чланку ћемо научити како аутоматски освежити изведену табелу помоћу ВБА. Овај начин је лакши него што сте замислили.
Ово је једноставна синтакса за аутоматско освежавање изведених табела у радној свесци.
'Код у изворном листу података Објекат Приватни под -радни лист_Деацтивате () име_таблице_окретне_табеле.Заводне табеле ("име_табличне_табеле"). ПивотЦацхе.Рефресх Енд Суб
Шта су заокретне кеш меморије?
Свака изведена табела складишти податке у заокретној кеш меморији. Због тога пивот може приказати претходне податке. Када освежавамо изведене табеле, ажурира кеш меморију новим изворним подацима како би одражавао промене у изведеној табели.
Дакле, само нам је потребан макро за освежавање кеша заокретних табела. То ћемо учинити помоћу догађаја радног листа тако да не морамо ручно покретати макро.
Где кодирати за аутоматско освежавање изведених табела?
Ако су ваши изворни подаци и заокретне табеле на различитим листовима, тада би ВБА код требало да се налази у изворној листи са подацима.
Овде ћемо користити догађај Ворксхеет_СелецтионЦханге. Ово ће омогућити покретање кода кад год пређемо са изворног листа података на други лист. Касније ћу објаснити зашто сам користио овај догађај.
Овде имам изворне податке у листу 2 и заокретне табеле у листу 1.
Отворите ВБЕ помоћу тастера ЦТРЛ+Ф11. У истраживачу пројеката можете видети три објекта, лист 1, лист 2 и радну свеску.
Пошто Схеет2 садржи изворне податке, кликните двапут на објецт схеет2.
Сада можете видети два падајућа менија на врху подручја кода. Из првог падајућег менија изаберите радни лист. И из другог падајућег менија изаберите Деактивирај. Ово ће уметнути празан под назив Ворксхеет_Деацтивате. Наш код ће бити написан у овом поднаслову. Све линије написане у овом поднаслову извршавају се чим корисник пређе са овог листа на било који други лист.
На листу 1 имам две изведене табеле. Желим да освежим само једну изведену табелу. За то морам да знам назив изведене табеле. Да бисте знали назив било које изведене табеле, изаберите било коју ћелију у тој изведеној табели, идите на картицу за анализу изведене табеле. Са леве стране видећете назив изведене табеле. Овде можете променити и назив изведене табеле.
Сада знамо име изведене табеле, можемо написати једноставну линију за освежавање изведене табеле.
Привате Суб Ворксхеет_Деацтивате () Схеет1.ПивотТаблес ("ПивотТабле1"). ПивотЦацхе.Рефресх Енд Суб
И то је учињено.
Кад год пређете са изворних података, овај вба код ће се покренути ради освежавања изведене табеле1. Као што можете видети на доњем гифу.
Како освежити све изведене табеле у радној свесци?
У горњем примеру смо желели да освежимо само једну одређену изведену табелу. Али ако желите да освежите све изведене табеле у радној свесци, потребно је само да направите мале измене у свом коду.
Привате Суб Ворксхеет_Деацтивате () 'Схеет1.ПивотТаблес ("ПивотТабле1"). ПивотЦацхе.Рефресх За сваки рачунар у ТхисВоркбоок.ПивотЦацхес пц.Рефресх Нект пц Енд Суб
У овом коду користимо петљу Фор за петље кроз све заокретне кешеве у радној свесци. Објекат ТхисВоркбоок садржи све заокретне кешеве. За приступ њима користимо ТхисВоркбоок.ПивотЦацхес.
Зашто користити догађај Ворксхеет_Деацтивате?
Ако желите да освежите изведену табелу чим се изврши било каква промена у изворним подацима, требало би да користите догађај Ворксхеет_Цханге. Али ја то не препоручујем. То ће учинити да ваша радна свеска покрене код сваки пут када унесете било коју промену на листу. Можда ћете морати да направите стотине промена пре него што желите да видите резултат. Али Екцел ће освежити заокретну табелу при свакој промени. То ће довести до губитка времена и ресурса за обраду. Дакле, ако имате изведене табеле и податке на различитим листовима, боље је да користите догађај за деактивирање радног листа. Омогућава вам да завршите свој посао. Када пређете на листове заокретне табеле да бисте видели промене, она их мења.
Ако имате изведене табеле и изворне податке на истом листу и желите да се заокретне табеле аутоматски освежавају, можда ћете желети да користите Ворксхеет_Цханге Евент.
Привате Суб Ворксхеет_Цханге (БиВал Таргет Ас Ранге) Схеет1.ПивотТаблес ("ПивотТабле1"). ПивотЦацхе.Рефресх Енд Суб
Како освежити све у радним свескама када се изврши промена у изворним подацима?
Ако желите да освежите све у радној свесци (графикони, изведене табеле, формуле итд.), Можете користити наредбу ТхисВоркбоок.РефресхАлл.
Привате Суб Ворксхеет_Цханге (БиВал Таргет Ас Ранге) ТхисВоркбоок.РефресхАлл Енд Суб
Имајте на уму да овај код не мења извор података. Дакле, ако додате податке испод изворних података, овај код неће аутоматски укључити те податке. Можете користити Екцел табеле за складиштење изворних података. Ако не желите да користите табеле, можемо користити ВБА и за укључивање нових података. То ћемо научити у следећем водичу.
Па да колега, овако можете аутоматски освежити заокретне табеле у Екцелу. Надам се да сам вам довољно објаснио и да вам је овај чланак добро послужио. Ако имате питања у вези са овом темом, можете ме питати у одељку за коментаре испод.
Како динамички ажурирати опсег извора података изведене табеле у Екцелу: Да бисмо динамички променили опсег изворних података изведених табела, користимо заокретне кешеве. Ових неколико редова може динамички ажурирати било коју изведену табелу променом опсега изворних података. У ВБА користите објекте изведених табела као што је приказано испод …
Покрените макро ако је на листу унета било каква промена у наведеном опсегу: У вашим ВБА поступцима, имали бисте потребу да покрећете макрое када се промени одређени опсег или ћелија. У том случају, за покретање макроа када се изврши промена циљног опсега, користимо догађај цханге.
Покрени макро када дође до било какве промене на листу | Дакле, за покретање вашег макроа кад год се лист ажурира, користимо ВБА догађаје радног листа.
Најједноставнији ВБА код за означавање тренутног реда и колоне помоћу | Користите овај мали ВБА исечак да означите тренутни ред и колону листа.
Догађаји радног листа у програму Екцел ВБА | Догађај радног листа је заиста користан када желите да се ваши макрои покрену када се на листу појави одређени догађај.
Популарни чланци:
50 Екцел пречица за повећање продуктивности | Убрзајте свој задатак. Ових 50 пречица ће учинити да радите још брже на Екцелу.
Функција ВЛООКУП у Екцелу | Ово је једна од најчешће кориштених и популарних функција програма Екцел која се користи за тражење вриједности из различитих распона и листова.
ЦОУНТИФ у програму Екцел 2016 | Бројте вредности са условима користећи ову невероватну функцију. Не морате филтрирати податке да бисте рачунали одређену вредност. Цоунтиф функција је неопходна за припрему ваше контролне табле.
Како се користи функција СУМИФ у програму Екцел | Ово је још једна битна функција контролне табле. Ово вам помаже да сумирате вредности под одређеним условима.