Kaip automatiškai atnaujinti „Pivot“ lenteles naudojant „VBA Excel“

Turinys:

Anonim

Kaip visi žinome, kai keičiame suvestinės lentelės šaltinio duomenis, ji iš karto neatsispindi suvestinėje lentelėje. Turime atnaujinti suvestines lenteles, kad pamatytume pakeitimus. Ir jei atsiųsite atnaujintą failą neatnaujinę suvestinių lentelių, galite jausti gėdą.

Taigi šiame straipsnyje sužinosime, kaip automatiškai atnaujinti suvestinę lentelę naudojant VBA. Šis būdas yra lengvesnis, nei įsivaizdavote.

Tai paprasta sintaksė automatiškai atnaujinti suvestines lenteles darbaknygėje.

„Kodas šaltinio duomenų lapo objekto privačiame antriniame darbalapyje_Deactivate () sheetname_of_pivot_table.PivotTables („ pivot_table_name “).„ PivotCache.Refresh End Sub “ 

Kas yra „Pivot“ talpyklos?

Kiekviena suvestinė lentelė saugo duomenis suvestinėje talpykloje. Štai kodėl „pivot“ gali rodyti ankstesnius duomenis. Kai atnaujiname suvestines lenteles, ji atnaujina talpyklą naujais šaltinio duomenimis, kad atspindėtų suvestinės lentelės pakeitimus.

Taigi mums tereikia makrokomandos, kad atnaujintume suvestinių lentelių talpyklą. Tai padarysime naudodami darbalapio įvykį, kad nereikėtų paleisti makro rankiniu būdu.

Kur koduoti, norint automatiškai atnaujinti „Pivot“ lenteles?

Jei jūsų šaltinio duomenys ir suvestinės lentelės yra skirtinguose lapuose, tada VBA kodas turėtų būti pateiktas šaltinio duomenų lape.

Čia mes naudosime „Worksheet_SelectionChange Event“. Dėl to kodas bus paleistas, kai pereisime iš šaltinio duomenų lapo į kitą lapą. Vėliau paaiškinsiu, kodėl pasinaudojau šiuo renginiu.

Čia aš turiu šaltinio duomenis 2 lape ir suvestines lenteles 1 lape.

Atidarykite VBE naudodami CTRL+F11 klavišus. „Project Explorer“ galite pamatyti tris objektus: „Sheet1“, „Sheet2“ ir „Workbook“.

Kadangi „Sheet2“ yra šaltinio duomenys, dukart spustelėkite „sheet2“ objektą.

Dabar kodo srities viršuje galite pamatyti du išskleidžiamuosius meniu. Iš pirmojo išskleidžiamojo meniu pasirinkite darbalapį. Ir iš antrojo išskleidžiamojo meniu pasirinkite Išjungti. Tai įterps tuščią antrinį pavadinimą „Worksheet_Deactivate“. Mūsų kodas bus parašytas šiame poskyryje. Visos eilutės, parašytos šiame poskyryje, bus įvykdytos, kai tik vartotojas persijungs iš šio lapo į bet kurį kitą lapą.

1 lape turiu dvi suvestines lenteles. Noriu atnaujinti tik vieną suvestinę lentelę. Tam turiu žinoti suvestinės lentelės pavadinimą. Norėdami sužinoti bet kurios suvestinės lentelės pavadinimą, pasirinkite bet kurią langelį toje suvestinėje lentelėje, eikite į suvestinės lentelės analizės skirtuką. Kairėje pusėje pamatysite suvestinės lentelės pavadinimą. Čia taip pat galite pakeisti suvestinės lentelės pavadinimą.

Dabar žinome suvestinės lentelės pavadinimą, galime parašyti paprastą eilutę, kad atnaujintume suvestinę lentelę.

Privatus antrinis darbalapis_Deaktyvinti () Sheet1.PivotTables ("PivotTable1"). PivotCache.Refresh End Sub 

Ir tai daroma.

Dabar, kai pereisite nuo šaltinio duomenų, šis vba kodas bus paleistas, kad būtų atnaujinta suvestinė lentelė1. Kaip matote žemiau esančiame gif.

Kaip atnaujinti visas darbaknygės „Pivot“ lenteles?

Pirmiau pateiktame pavyzdyje norėjome atnaujinti tik vieną konkrečią suvestinę lentelę. Bet jei norite atnaujinti visas darbaknygės suvestines lenteles, jums tereikia šiek tiek pakeisti kodą.

Private Sub Worksheet_Deactivate () 'Sheet1.PivotTables ("PivotTable1"). "PivotCache.Refresh" kiekvienam kompiuteriui "ThisWorkbook.PivotCaches" pc. Atnaujinti Kitas kompiuterio pabaiga 

Šiame kode mes naudojame ciklą „For“, kad galėtume peržvelgti kiekvieną darbaknygės sukamąją talpyklą. „ThisWorkbook“ objekte yra visos suvestinės talpyklos. Norėdami juos pasiekti, naudojame „ThisWorkbook.PivotCaches“.

Kodėl verta naudoti „Worksheet_Deactivate“ įvykį?

Jei norite atnaujinti suvestinę lentelę, kai tik bus pakeisti šaltinio duomenys, turėtumėte naudoti „Worksheet_Change“ įvykį. Bet aš to nerekomenduoju. Tai padarys jūsų darbaknygę paleistą kodą kiekvieną kartą, kai pakeisite lapą. Prieš matydami rezultatą, turėsite atlikti šimtus pakeitimų. Tačiau „Excel“ atnaujins pagrindinę lentelę kiekvieną kartą. Dėl to bus švaistomas apdorojimo laikas ir ištekliai. Taigi, jei turite suvestines lenteles ir duomenis skirtinguose lapuose, geriau naudoti darbalapio išjungimo įvykį. Tai leidžia užbaigti savo darbą. Kai perjungiate į „pivot“ lentelės lapus, kad pamatytumėte pakeitimus, pakeitimai bus pakeisti.

Jei tame pačiame lape turite suvestines lenteles ir šaltinio duomenis ir norite, kad suvestinės lentelės automatiškai jas atnaujintų, galbūt norėsite naudoti „Worksheet_Change Event“.

Privatus antrinis darbalapio keitimas („ByVal Target as Range“) lapas 1.PivotTables („PivotTable1“). „PivotCache.Refresh End Sub“ 

Kaip atnaujinti viską darbaknygėse, kai keičiami šaltinio duomenys?

Jei norite atnaujinti viską darbaknygėje (diagramas, suvestines lenteles, formules ir tt), galite naudoti komandą „ThisWorkbook.RefreshAll“.

Privatus antrinis darbalapio keitimas („ByVal Target as Range“) „ThisWorkbook“. RefreshAll End Sub 

Atminkite, kad šis kodas nekeičia duomenų šaltinio. Taigi, jei pridėsite duomenų po šaltinio duomenimis, šis kodas automatiškai neįtrauks šių duomenų. Šaltinio duomenims saugoti galite naudoti „Excel“ lenteles. Jei nenorite naudoti lentelių, naujiems duomenims įtraukti galime naudoti VBA. To išmoksime kitoje pamokoje.

Taigi taip, drauge, taip galite automatiškai atnaujinti „Excel“ suvestines lenteles. Tikiuosi, kad buvau pakankamai aiškus ir šis straipsnis jums buvo naudingas. Jei turite klausimų šia tema, galite manęs paklausti žemiau esančiame komentarų skyriuje.

Kaip dinamiškai atnaujinti „Pivot Table“ duomenų šaltinio diapazoną „Excel“: Norėdami dinamiškai keisti suvestinių lentelių šaltinių duomenų diapazoną, naudojame suvestines talpyklas. Šios kelios eilutės gali dinamiškai atnaujinti bet kurią suvestinę lentelę, pakeisdamos šaltinio duomenų diapazoną. VBA naudokite suvestinių lentelių objektus, kaip parodyta žemiau …

Vykdykite makrokomandą, jei lape bus atlikti pakeitimai nurodytame diapazone: VBA praktikoje turėtumėte paleisti makrokomandas, kai pasikeičia tam tikras diapazonas ar langelis. Tokiu atveju, norėdami paleisti makrokomandas, kai keičiamas tikslinis diapazonas, naudojame pakeitimo įvykį.

Vykdyti makrokomandą, kai lape atliekami bet kokie pakeitimai | Taigi, norėdami paleisti makrokomandą, kai lapas atnaujinamas, naudojame VBA darbalapio įvykius.

Paprasčiausias VBA kodas, skirtas paryškinti dabartinę eilutę ir stulpelį | Naudokite šį mažą VBA fragmentą, kad paryškintumėte dabartinę lapo eilutę ir stulpelį.

Užduoties įvykiai „Excel VBA“ | Skaičiuoklės įvykis yra tikrai naudingas, kai norite, kad jūsų makrokomandos būtų paleistos, kai lape įvyksta nurodytas įvykis.

Populiarūs straipsniai:

50 „Excel“ nuorodų, skirtų produktyvumui padidinti | Greičiau atlikite savo užduotį. Šie 50 sparčiųjų klavišų leis dar greičiau dirbti naudojant „Excel“.

„VLOOKUP“ funkcija „Excel“ | Tai yra viena iš dažniausiai naudojamų ir populiariausių „Excel“ funkcijų, naudojama norint ieškoti vertės iš įvairių diapazonų ir lapų.

COUNTIF „Excel 2016“ | Naudodami šią nuostabią funkciją, suskaičiuokite reikšmes su sąlygomis. Norint skaičiuoti konkrečią vertę, nereikia filtruoti duomenų. Skaitiklio funkcija yra būtina norint paruošti prietaisų skydelį.

Kaip naudoti „SUMIF“ funkciją „Excel“ | Tai dar viena esminė prietaisų skydelio funkcija. Tai padeda apibendrinti vertes konkrečiomis sąlygomis.