VBA atsvaidzināt rakurstabulu - Automātiski atsvaidzināt visu rakurstabulu, izmantojot VBA

Excel VBA atsvaidzināt rakurstabulu

Ievietojot rakurstabulu lapā, kad dati mainās, rakurstabulas dati nemainās, mums tas jādara manuāli, bet VBA ir paziņojums, lai atsvaidzinātu rakurstabulu, kas ir izteiksme. Atjaunojama , izmantojot šo, mēs varam atsvaidzināt rakurstabula, atsaucoties uz to veidojošo darblapu, vai arī mēs varam atsaukties uz visām darblapās esošajām rakurstabulām un atsvaidzināt tās visas vienlaikus.

Pagrieziena tabula ir būtiska, analizējot milzīgo datu apjomu. Tas palīdz analizēt, apkopot, kā arī veikt noderīgu datu interpretāciju. Tomēr viena no šīs rakurstabulas problēmām ir tā, ka tā netiks automātiski atsvaidzināta, ja izmainīsies avota dati. Lietotājam ir jāatsvaidzina rakurstabula, dodoties uz konkrēto rakurstabulu katru reizi, kad notiek izmaiņas. Bet atvadieties no manuālā procesa, jo šeit mums ir metode, kā atsvaidzināt rakurstabulu, tiklīdz veicat izmaiņas rakurstabulā.

Kā automātiski atsvaidzināt rakurstabulas datu VBA kodu?

Vienīgā reize, kad rakurstabula ir jāatjaunina, ir gadījumi, kad tiek mainītas atsauces rakurstabulas avota dati.

Piemēram, aplūkojiet zemāk redzamos datus un rakurstabulu.

Tagad es mainīšu skaitļus avota datos, ti, no A1 uz B17.

Šūnā B9 man ir jāmaina vērtība no 499 uz 1499, ti, datu pieaugums par 1000, bet, ja skatāties rakursā, rezultāts joprojām tiek rādīts kā 4295, nevis 5295. Man ir manuāli jāatsvaidzina rakurstabula, lai atjauninātu pagrieziena galds.

Lai novērstu šo problēmu, mums ir jāuzraksta vienkāršs Excel makro kods, lai atsvaidzinātu rakurstabulu ikreiz, kad avota datos notiek kādas izmaiņas.

# 1 - vienkāršs makro, lai atsvaidzinātu visu tabulu

1. solis: Mainiet datu lapas notikumu

Mums jāaktivizē datu lapas izmaiņu notikums. Vizuālā pamata redaktorā veiciet dubultklikšķi uz datu lapas.

Kad esat veicis dubultklikšķi uz lapas, atlasiet “Worksheet” un atlasiet notikumu kā “Change”.

Tiks parādīta automātiska apakšprocedūra, kas atvērta kā Worksheet_Change (ByVal Target As Range)

2. darbība: izmantojiet darblapas objektu

Izmantojot objektu Darblapas, skatiet datu lapu.

3. darbība: skatiet rakurstabulu pēc nosaukuma

Skatiet rakurstabulas nosaukumu pēc rakurstabulas nosaukuma.

4. solis: izmantojiet tabulas atsvaidzināšanas metodi

Atlasiet metodi kā “Atsvaidzināt tabulu”.

Tagad šis kods atsvaidzinās rakurstabulu “PivotTable1” ikreiz, kad avota datu lapā būs kādas izmaiņas. Jūs varat izmantot zemāk esošo kodu. Jums vienkārši jāmaina rakurstabulas nosaukums.

Kods:

Privāta apakšdarblapa_maina (ByVal mērķis kā diapazons) darblapa ("Datu lapa"). PivotTables ("PivotTable1"). RefreshTable End Sub

# 2 - atsvaidziniet visas vienas darblapas rakurstabulas

Ja tajā pašā darblapā ir daudz rakurstabulu, visas atskaites tabulas varat atsvaidzināt ar vienu klikšķi. Izmantojiet šo kodu, lai atsvaidzinātu visas rakurstabulas lapā.

Kods:

Sub Refresh_Pivot_Tables_Example1() Worksheets("Data Sheet").Select With ActiveSheet .PivotTables("Table1").RefreshTable .PivotTables("Table2").RefreshTable .PivotTables("Table3").RefreshTable .PivotTables("Table4").RefreshTable .PivotTables("Table5").RefreshTable End With End Sub

You need to change the name of the worksheet and pivot table names as per your worksheet details.

#3 - Refresh All Tables in the Workbook

It is highly unlikely we have all the pivot tables on the same worksheet. Usually, for each report, we try to add separate pivot tables in separate sheets. In these cases, we cannot keep writing the code for each pivot table to be refreshed.

So, what we can do is with a single code using loops, we can loop through all the pivot tables on the workbook and refresh them with a single click of the button.

The below code will loop through each pivot table and refresh them.

Code 1:

Sub Refresh_Pivot_Tables_Example2() Dim PT As PivotTable For Each PT In ActiveWorkbook.PivotTables PT.RefreshTable Next PT End Sub

Code 2:

Sub Refresh_Pivot_Tables_Example3() Dim PC As PivotCache For Each PC In ActiveWorkbook.PivotCaches PC.Refresh Next PT End Sub

Both the codes will do the refreshing of pivot tables.

If you want the pivot table to be refreshed as soon as there is any change in the datasheet of the pivoting sheet, you need to copy and paste the above codes to the Worksheet Change event in that workbook.

#4 - Avoid Loading Time by using Worksheet Deactivate Event

Kad mēs izmantojam notikumu “Darblapas maiņa”, tas tiek atsvaidzināts pat tad, ja datu avotā nav izmaiņu, bet, ja darblapā notiek kādas izmaiņas.

Pat ja darblapā ievadāt vienu punktu, tas mēģina atsvaidzināt rakurstabulu. Tāpēc, lai no tā izvairītos, metodes “Darblapas maiņa” vietā varam izmantot metodi “Darblapas deaktivizēšana”.

Deaktivizējiet notikumu atjauninājumus rakurstabulā, pārejot no vienas lapas uz otru.

Interesanti raksti...