VBA atnaujinti suvestinę lentelę Automatiškai atnaujinkite visą suvestinę lentelę naudodami VBA

„Excel VBA“ atnaujinimo „Pivot“ lentelė

Kai įterpiame suvestinę lentelę į lapą, kai duomenys pasikeičia, suvestinės lentelės duomenys patys nepasikeičia, mes turime tai padaryti rankiniu būdu, tačiau VBA yra sakinys, skirtas atnaujinti „pivot“ lentelę, kuri yra išraiška. Atnaujinama, naudodami tai mes galime atnaujinti „pivot“ lentelę, nurodydami ją sudarantį darbalapį, arba mes galime nurodyti visas darbalapių sukimosi lenteles darbalaukiuose ir jas visas atnaujinti vienu metu.

„Pivot“ lentelė yra gyvybiškai svarbi analizuojant didžiulį duomenų kiekį. Tai padeda analizuoti, apibendrinti ir interpretuoti naudingus duomenis. Tačiau viena iš šios suvestinės lentelės problemų yra ta, kad ji nebus automatiškai atnaujinta, jei pasikeis šaltinio duomenys. Vartotojas turi atnaujinti suvestinę lentelę, eidamas į tam tikrą suvestinę lentelę kiekvieną kartą, kai yra pakeitimų. Tačiau atsisveikinkite su rankiniu procesu, nes čia mes turime būdą atnaujinti „Pivot“ lentelę, kai tik pakeisite „Pivot“ lentelę.

Kaip automatiškai atnaujinti „Pivot“ lentelės duomenų VBA kodą?

Vienintelis kartas, kai reikia suvestinės lentelę atnaujinti, yra tai, kad pasikeičia mūsų nurodytos suvestinės lentelės šaltinio duomenys.

Pvz., Pažiūrėkite į toliau pateiktus duomenis ir suvestinę lentelę.

Dabar pakeisiu pirminių duomenų skaičius, ty nuo A1 iki B17.

Langelyje B9 turiu pakeisti reikšmę nuo 499 iki 1499, ty 1000 duomenų padidėjimo, bet jei pažiūrėsite į „pivot“, rezultatas vis tiek bus rodomas kaip 4295, o ne 5295. Turiu rankiniu būdu atnaujinti savo „pivot“ lentelę, kad atnaujinčiau „pivot“ lentelę.

Norėdami išspręsti šią problemą, turime parašyti paprastą „Excel“ makrokodą, kad atnaujintume sukamą lentelę, kai tik pasikeičia šaltinio duomenys.

Šį „VBA Refresh Pivot Table“ šabloną galite atsisiųsti čia - VBA Refresh Pivot Table Excel šablonas

1 - paprastas makrokomandas, skirtas atnaujinti visą lentelę

1 žingsnis: Pakeiskite duomenų lapo įvykį

Turime suaktyvinti duomenų lapo pakeitimo įvykį. Vizualiniame pagrindiniame redaktoriuje dukart spustelėkite duomenų lapą.

Du kartus spustelėję lapą, pasirinkite „Darbalapis“ ir pasirinkite įvykį kaip „Keisti“.

Pamatysite automatinę antrinę procedūrą, atidarytą kaip „ Worksheet_Change“ („ByVal Target As Range“)

2 žingsnis: naudokite darbalapio objektą

Peržiūrėkite duomenų lapą naudodami objektą „Darbalapiai“.

3 žingsnis: žr. „Pivot“ lentelę pagal pavadinimą

„Pivot“ lentelės pavadinime nurodykite „pivot“ lentelės pavadinimą.

4 žingsnis: naudokite lentelės atnaujinimo metodą

Pasirinkite metodą kaip „Atnaujinti lentelę“.

Dabar šis kodas atnaujins suvestinę lentelę „PivotTable1“, kai tik pasikeis šaltinio duomenų lapas. Galite naudoti žemiau pateiktą kodą, tiesiog turite pakeisti suvestinės lentelės pavadinimą.

Kodas:

 Privatus antrinis darbalapio pakeitimas („ByVal“ tikslas kaip diapazonas) darbalapis („Duomenų lapas“). „PivotTables“ („PivotTable1“). „RefreshTable“ pabaiga 

# 2 - atnaujinkite visas to paties darbalapio suvestines lenteles

Jei tame pačiame darbalapyje turite daug suvestinių lentelių, visas pasukamas lenteles galite atnaujinti vienu paspaudimu. Naudokite žemiau pateiktą kodą, kad atnaujintumėte visas lapo suvestines lenteles.

Kodas:

 Sub Refresh_Pivot_Tables_Example1 () darbalapiai ("Duomenų lapas"). Pasirinkite naudodami "ActiveSheet" .PivotTables ("Table1"). RefreshTable .PivotTables ("Table2"). RefreshTable .PivotTables ("Table3"). RefreshTable .PivotTables ("Table4"). „RefreshTable .PivotTables“ („5 lentelė“). „RefreshTable“ pabaiga su pabaigos antrine dalimi 

Turite pakeisti darbalapio pavadinimą ir suvestinių lentelių pavadinimus pagal išsamią darbalapio informaciją.

# 3 - atnaujinkite visas darbaknygės lenteles

Labai mažai tikėtina, kad visas sukimosi lenteles turime tame pačiame darbalapyje. Paprastai kiekvienai ataskaitai bandome pridėti atskiras sukimosi lenteles atskiruose lapuose. Tokiais atvejais negalime toliau rašyti kiekvienos atnaujinamos suvestinės lentelės kodo.

Taigi, ką mes galime padaryti, tai naudodami vieną kodą naudodami kilpas, mes galime peržvelgti visas darbaknygės sukamas lenteles ir atnaujinti jas vienu mygtuko paspaudimu.

Žemiau pateiktas kodas peržvelgs kiekvieną suvestinę lentelę ir jas atnaujins.

1 kodas:

 Sub Refresh_Pivot_Tables_Example2 () pritemdyti PT kaip kiekvieno „ActiveWorkbook“ PT suvestinę lentelę. „PivotTables“ PT. „RefreshTable“ Kitas PT pabaigos antrinis 

2 kodas:

 Sub Refresh_Pivot_Tables_Example3 () Blokuokite kompiuterį kaip „PivotCache“ kiekvienam kompiuteriui, esančiam „ActiveWorkbook“. „PivotCaches“ kompiuteris. Atnaujinkite kitą PT pabaigos sub 

Abu kodai atnaujins suvestines lenteles.

Jei norite, kad suvestinė lentelė būtų atnaujinta, kai tik pasikeis pasukamo lapo duomenų lapas, turite nukopijuoti ir įklijuoti aukščiau nurodytus kodus į tos darbaknygės įvykį „Darbalapio keitimas“.

# 4 - Venkite įkėlimo laiko naudodami darbalapį Deaktyvuokite įvykį

Kai mes naudojame įvykį „Darbalapio keitimas“, jis nuolat atnaujinamas, net jei duomenų šaltinyje nėra jokių pakeitimų, bet jei darbalapyje įvyksta kokių nors pakeitimų.

Net jei darbalapyje įvedate vieną tašką, jis bando atnaujinti suvestinę lentelę. Taigi, kad to išvengtume, mes galime naudoti „Worksheet Deactivate“, o ne „Worksheet Change“ metodą.

Išjunkite įvykių naujinimus suvestinėje lentelėje, kai pereinate iš vieno lapo į kitą.