Kā automātiski atsvaidzināt rakurstabulas, izmantojot VBA Excel

Satura rādītājs:

Anonim

Kā mēs visi zinām, ikreiz, kad veicam izmaiņas rakurstabulas avota datos, tas uzreiz netiek atspoguļots rakurstabulā. Mums ir jāatsvaidzina rakurstabulas, lai redzētu izmaiņas. Un, ja jūs nosūtāt atjauninātu failu, neatsvaidzinot rakurstabulas, jūs varat justies apmulsis.

Tātad šajā rakstā mēs uzzināsim, kā automātiski atsvaidzināt rakurstabulu, izmantojot VBA. Šis veids ir vieglāks, nekā jūs iedomājāties.

Šī ir vienkāršā sintakse, lai automātiski atsvaidzinātu rakurstabulas darbgrāmatā.

'Kods avota datu lapas objekta privātajā apakšlapā Darblapa_Deaktivizēt () lapas_nosaukuma_tabulas_tabulas.PivotTabulas ("pivot_tabulas_nosaukums"). PivotCache.Refresh End Sub 

Kas ir Pivot kešatmiņas?

Katrā rakurstabulā dati tiek glabāti šarnīra kešatmiņā. Tāpēc pivot var parādīt iepriekšējos datus. Kad mēs atsvaidzinām rakurstabulas, tā atjaunina kešatmiņu ar jauniem avota datiem, lai atspoguļotu izmaiņas rakurstabulā.

Tāpēc mums ir nepieciešams tikai makro, lai atsvaidzinātu rakurstabulu kešatmiņu. Mēs to darīsim, izmantojot darblapas notikumu, lai makro nebūtu jāpalaiž manuāli.

Kur kodēt, lai automātiski atsvaidzinātu rakurstabulas?

Ja jūsu avota dati un rakurstabulas atrodas dažādās lapās, tad VBA kodam ir jābūt avota datu lapā.

Šeit mēs izmantosim notikumu Worksheet_SelectionChange. Tas liks kodam darboties ikreiz, kad pārslēgsimies no avota datu lapas uz citu lapu. Vēlāk es paskaidrošu, kāpēc es izmantoju šo notikumu.

Šeit man ir avota dati 2. lapā un rakurstabulas 1. lapā.

Atveriet VBE, izmantojot taustiņu CTRL+F11. Projekta izpētē varat redzēt trīs objektus: Sheet1, Sheet2 un Workbook.

Tā kā lapa 2 satur avota datus, veiciet dubultklikšķi uz lapas 2 objekta.

Tagad koda apgabala augšdaļā varat redzēt divus nolaižamos failus. Pirmajā nolaižamajā izvēlnē atlasiet darblapu. Otrajā nolaižamajā izvēlnē atlasiet Deaktivizēt. Tādējādi tiks ievietots tukšs apakšnosaukums Worksheet_Deactivate. Mūsu kods tiks ierakstīts šajā apakšnodaļā. Visas šajā apakšrakstā rakstītās rindas tiek izpildītas, tiklīdz lietotājs pārslēdzas no šīs lapas uz jebkuru citu lapu.

Lapā 1 man ir divas šarnīra tabulas. Es vēlos atsvaidzināt tikai vienu rakurstabulu. Lai to izdarītu, man jāzina rakurstabulas nosaukums. Lai uzzinātu jebkuras rakurstabulas nosaukumu, atlasiet jebkuru šūnu šajā rakurstabulā, dodieties uz rakurstabulas analīzes cilni. Kreisajā pusē redzēsit rakurstabulas nosaukumu. Šeit varat arī mainīt rakurstabulas nosaukumu.

Tagad mēs zinām rakurstabulas nosaukumu, mēs varam uzrakstīt vienkāršu rindu, lai atsvaidzinātu rakurstabulu.

Privāta apakšdarblapa_Deaktivizēt () Sheet1.PivotTables ("PivotTable1"). PivotCache.Refresh End Sub 

Un tas tiek darīts.

Tagad, kad pārslēgsities no avota datiem, šis vba kods darbosies, lai atsvaidzinātu rakurstabulu1. Kā redzat zemāk esošajā gifā.

Kā atsvaidzināt visas darbgrāmatas rakurstabulas?

Iepriekš minētajā piemērā mēs vēlējāmies atsvaidzināt tikai vienu konkrētu rakurstabulu. Bet, ja vēlaties atsvaidzināt visas darbgrāmatas rakurstabulas, jums vienkārši jāveic nelielas izmaiņas kodā.

Privāta apakšdarblapa_Deaktivizēt () 'Sheet1.PivotTables ("PivotTable1"). PivotCache.Refresh katram datoram šajā darbgrāmatā. PivotCaches p. 

Šajā kodā mēs izmantojam cilpu For, lai cilpotu cauri visām darbgrāmatas šarnīra kešatmiņām. ThisWorkbook objekts satur visas šarnīra kešatmiņas. Lai tiem piekļūtu, mēs izmantojam ThisWorkbook.PivotCaches.

Kāpēc izmantot notikumu Worksheet_Deactivate?

Ja vēlaties atsvaidzināt rakurstabulu, tiklīdz tiek veiktas jebkādas izmaiņas avota datos, izmantojiet notikumu Worksheet_Change. Bet es to neiesaku. Tas ļaus jūsu darbgrāmatai palaist kodu katru reizi, kad veicat izmaiņas lapā. Lai redzētu rezultātu, jums, iespējams, būs jāveic simtiem izmaiņu. Bet Excel atsvaidzinās rakurstabulu par katru izmaiņu. Tas novedīs pie apstrādes laika un resursu izšķiešanas. Tātad, ja jums ir rakurstabulas un dati dažādās lapās, labāk ir izmantot darblapas deaktivizēšanas notikumu. Tas ļauj pabeigt darbu. Kad esat pārslēdzies uz šarnīra tabulas lapām, lai redzētu izmaiņas, tas labo izmaiņas.

Ja vienā lapā ir rakurstabulas un avota dati un vēlaties, lai rakurstabulas to automātiski atsvaidzinātu, iespējams, vēlēsities izmantot notikumu Worksheet_Change Event.

Privāta apakšdarblapas_maiņa (ByVal mērķis kā diapazons) Sheet1.PivotTables ("PivotTable1"). PivotCache.Refresh End Sub 

Kā atsvaidzināt visu darbgrāmatās, ja tiek mainīti avota dati?

Ja vēlaties atsvaidzināt visu darbgrāmatā (diagrammas, rakurstabulas, formulas utt.), Varat izmantot komandu ThisWorkbook.RefreshAll.

Privāta apakšdarblapa_maiņa (ByVal mērķis kā diapazons) ThisWorkbook.RefreshAll End Sub 

Lūdzu, ņemiet vērā, ka šis kods nemaina datu avotu. Tātad, ja jūs pievienojat datus zem avota datiem, šis kods šos datus automātiski neietvers. Avota datu glabāšanai varat izmantot Excel tabulas. Ja nevēlaties izmantot tabulas, mēs varam izmantot VBA arī jaunu datu iekļaušanai. Mēs to uzzināsim nākamajā apmācībā.

Tātad, jā, šādā veidā jūs varat automātiski atsvaidzināt rakurstabulas programmā Excel. Es ceru, ka es biju pietiekami izskaidrojošs un šis raksts jums labi kalpoja. Ja jums ir kādi jautājumi par šo tēmu, varat uzdot mani komentāru sadaļā zemāk.

Kā dinamiski atjaunināt rakurstabulas datu avota diapazonu programmā Excel: Lai dinamiski mainītu rakurstabulu avota datu diapazonu, mēs izmantojam šarnīra kešatmiņas. Šīs dažas rindiņas var dinamiski atjaunināt jebkuru rakurstabulu, mainot avota datu diapazonu. VBA izmantojiet rakurstabulu objektus, kā parādīts zemāk …

Palaidiet makro, ja lapā tiek veiktas izmaiņas noteiktā diapazonā: VBA praksē jums būtu jāpalaiž makro, kad mainās noteikts diapazons vai šūna. Tādā gadījumā, lai palaistu makro, kad tiek veiktas izmaiņas mērķa diapazonā, mēs izmantojam izmaiņu notikumu.

Palaist makro, kad lapā tiek veiktas izmaiņas | Tātad, lai palaistu jūsu makro ikreiz, kad lapa tiek atjaunināta, mēs izmantojam VBA darblapas notikumus.

Vienkāršākais VBA kods, lai izceltu pašreizējo rindu un kolonnu, izmantojot | Izmantojiet šo mazo VBA fragmentu, lai iezīmētu lapas pašreizējo rindu un kolonnu.

Darblapas notikumi programmā Excel VBA | Darblapas notikums ir patiešām noderīgs, ja vēlaties, lai makro darbotos, kad lapā notiek noteikts notikums.

Populāri raksti:

50 Excel saīsnes, lai palielinātu produktivitāti | Ātrāk izpildiet savu uzdevumu. Šie 50 īsceļi ļaus jums strādāt vēl ātrāk programmā Excel.

Funkcija VLOOKUP programmā Excel | Šī ir viena no visbiežāk izmantotajām un populārākajām Excel funkcijām, kas tiek izmantota, lai meklētu vērtību no dažādiem diapazoniem un lapām.

COUNTIF programmā Excel 2016 | Saskaitiet vērtības ar nosacījumiem, izmantojot šo apbrīnojamo funkciju. Jums nav jāfiltrē dati, lai uzskaitītu konkrētu vērtību. Skaitītāja funkcija ir būtiska, lai sagatavotu informācijas paneli.

Kā lietot SUMIF funkciju programmā Excel | Šī ir vēl viena būtiska informācijas paneļa funkcija. Tas palīdz apkopot vērtības noteiktos apstākļos.