Le tabelle pivot in Excel sono fondamentali per rendere i dati più facili da capire e comprendere. Una tabella pivot può condensare e ridurre i dati in strutture significative. Gli utenti di MS Excel li hanno ampiamente adottati nel settore dei dati.

Sapevi che puoi automatizzare le tue tabelle pivot in Excel e crearle con un solo clic? MS Excel si integra bene con VBA ed è diventato uno strumento eccellente per automatizzare le attività ripetitive.

Ecco come automatizzare una tabella pivot con una macro in MS Excel VBA.

Usa un set di dati di esercitazione

Puoi scaricare e utilizzare un manichino set di dati da Tableau per seguire lo script VBA all'interno di questa guida. Il codice VBA funzionerà con qualsiasi altro set di dati, con alcune modifiche di base. Prima di iniziare, assicurati di averlo macro abilitate all'interno della cartella di lavoro di Excel.

Ci sono alcune colonne essenziali che puoi usare all'interno della tabella pivot. Per capire le sfumature e la struttura finale del tavolo, puoi creare manualmente una tabella pivot di base con i seguenti elementi:

instagram viewer
  • Filtro: Regione
  • Righe: Sottocategoria
  • Colonne: Stato
  • Valori: Saldi

Il perno finale dovrebbe apparire come segue:

Tuttavia, puoi lasciare che VBA lo faccia automaticamente invece di prepararlo manualmente.

Come creare automaticamente tabelle pivot in Excel

Per automatizzare le tue tabelle pivot con VBA, apri un nuovo file Excel e rinomina i fogli come segue:

  • Primo foglio: Macro
  • Secondo foglio: Dati

IL Macro foglio contiene lo script macro, mentre il Dati foglio contiene i tuoi dati. Sul foglio macro puoi inserire qualsiasi forma a tua scelta e assegnargli la macro. Fare clic con il tasto destro sulla forma e fare clic su Assegna macro.

Nella seguente finestra di dialogo, fare clic sul nome della macro e fare clic su OK. Questo passaggio assegna la macro alla forma.

1. Apri l'editor di codifica VBA di Excel

Premere Alt+F11 per aprire l'editor di codice. Una volta che sei nell'editor di codice, fai clic con il pulsante destro del mouse sul nome del file, seguito da Inserire E Modulo. È importante ricordare che scriverai tutto il codice VBA all'interno di un modulo prima di eseguirlo.

È una buona pratica usare un nome di modulo che risuoni con lo scopo del codice. Poiché si tratta di una demo, è possibile definire il nome del modulo come segue:

sub pivot_demo()

Il nome del modulo termina con Fine Sub, che è il comando finale di un modulo:

FINE Sub

2. Dichiarare le variabili

All'interno del modulo, inizia dichiarando le variabili per memorizzare alcuni valori definiti dall'utente che utilizzerai nello script. Puoi usare il Dim istruzione per dichiarare le variabili, come segue:

Foglio scuro COME Foglio di lavoro, DSheet COME Foglio di lavoro
Dim PvtCache COME PivotCache
Dim PvtTable COME Tabella pivot
Dim PvtRange COME Allineare
Oscura ultima_riga COME Lungo, Last_Col COME Lungo
Dim sht1 COME Variante

Utilizzerai queste variabili per quanto segue:

  • Foglio: Il foglio di destinazione, dove VBA creerà un pivot.
  • Foglio: La scheda tecnica.
  • PvtCache: Una cache pivot contiene il pivot.
  • Tabella Pvt: L'oggetto tabella pivot.
  • PvtRange: Un intervallo di dati per il pivot.
  • Last_Row e Last_Col: Ultima riga e colonna popolate all'interno del foglio dati (DSheet).
  • Sht1: Questa variabile è una variante.

3. Elimina avvisi e messaggi

Errori, avvisi e messaggi non necessari rallentano i codici VBA. Sopprimendo tali messaggi, è possibile accelerare notevolmente il processo.

Usa il seguente codice:

SU Errore Riprendi Avanti

Con Applicazione
.DisplayAlerts = Falso
.ScreenUpdating = Falso
FINECon

Dove:

  • In caso di errore Riprendi successivo: Questa clausola sopprime eventuali errori di runtime.
  • Applicazione: L'applicazione fa riferimento a MS Excel.
  • Visualizza avvisi: La proprietà DisplayAlerts definisce se mostrare gli avvisi.
  • Aggiornamento dello schermo: Questa proprietà definisce se aggiornare le modifiche in tempo reale o solo al termine dell'esecuzione del codice.

Quando questo codice viene eseguito, sopprime eventuali avvisi, avvisi e messaggi che Excel mostrerebbe altrimenti. È possibile disattivare i parametri DisplayAlerts e ScreenUpdating impostandone i valori su Falso.

Verso la fine del codice, puoi riattivarli impostando il valore come VERO.

4. Elimina tutti i fogli pivot esistenti

Per creare una nuova tabella pivot, hai due opzioni. Innanzitutto, elimina il foglio pivot esistente e usa VBA per creare un nuovo foglio per memorizzare il pivot. In alternativa, puoi utilizzare un foglio di lavoro esistente per contenere il pivot.

In questa guida, creiamo un nuovo foglio pivot per archiviare la tabella pivot.

IL per ciascuno ciclo scorre ogni foglio all'interno della cartella di lavoro e memorizza il nome del foglio all'interno del file sht1 variabile. È possibile utilizzare qualsiasi nome di variabile (sht1) per contenere il nome del foglio. Il ciclo scorre ogni foglio all'interno della cartella di lavoro corrente, cercandone uno con il nome specifico (Perno).

Quando il nome del foglio corrisponde, elimina il foglio e passa al foglio successivo. Una volta che il codice controlla tutti i fogli, esce dal ciclo e passa alla parte successiva del codice, che aggiunge un nuovo foglio, Perno.

Ecco come puoi farlo:

PerOgnisht1InCartella di lavoro attiva.Fogli di lavoro
Se sht1.Name = "Perno" Poi
sht1.Eliminare
FINESe
Avanti sht1

Fogli di lavoro. Aggiungere. Nome = "Perno"

5. Definire origine dati e fogli pivot

E' fondamentale creare delle variabili per memorizzare i riferimenti dei Pivot e dei Data sheet. Questi funzionano come scorciatoie, a cui puoi fare riferimento nel resto del codice.

Imposta PSheet = Fogli di lavoro("Perno")
Imposta DSheet = Fogli di lavoro("Dati")

6. Identificare l'ultima riga e colonna utilizzate

Questa parte del codice funziona in modo dinamico, in quanto dimensiona l'ultima riga e colonna popolata all'interno dei dati.

Last_Row = Foglio D. Celle (righe. Count, 1).End (xlUp).Row
Last_Col = Foglio D. Celle (1, Colonne. Count).End (xlToLeft).Column
Impostato PvtRange = DSheet. Celle(1, 1).Resize (Ultima_Riga, Ultima_Col)

Dove:

  • Ultima riga: Variabile per memorizzare l'ultimo numero di riga popolato, ad esempio 9995
  • Last_Col: Variabile per memorizzare l'ultimo numero di colonna popolato, ad esempio 21
  • PvtRange: PvtRange fa riferimento all'intero intervallo di dati per il pivot

7. Crea una cache pivot e una tabella pivot

Una cache pivot contiene la tabella pivot; pertanto, è necessario creare una cache prima di creare una tabella pivot. È necessario utilizzare i riferimenti di sintassi di VBA per creare la cache pivot all'interno del foglio pivot.

Facendo riferimento alla cache pivot, è necessario creare una tabella pivot. Come parte della tabella pivot, puoi definire il foglio, il riferimento di cella e il nome della tabella pivot.

Impostare PvtCache = ActiveWorkbook. PivotCache. Crea (SourceType:=xlDatabase, SourceData:=PvtRange).CreatePivotTable (TableDestination:=PSheet. Celle (2, 2), TableName:="MUODemoTable")
Impostare PvtTable = PvtCache. CreatePivotTable (TableDestination:=PSsheet. Celle (1, 1), TableName:="MUODemoTable")

Dove:

  • Cartella di lavoro attiva: La cartella di lavoro corrente in cui hai il foglio Dati e Pivot.
  • PivotCache. Creare: Sintassi predefinita per creare una cache pivot.
  • Tipo di origine: Poiché hai i dati all'interno della cartella di lavoro, puoi definirli come xlDatabase. Alcune altre opzioni includono xlConsolidation, xlExternal, O xlPivotTable.
  • FonteDati: Puoi fare riferimento all'intervallo di pivot precedente come dati di origine.
  • Crea tabella pivot: Comando predefinito per creare la tabella pivot.
  • TabellaDestinazione: È necessario specificare i riferimenti del foglio e della cella in cui si desidera creare il pivot.
  • NomeTabella: Specificare un nome per la tabella pivot.
  • Crea tabella pivot: Comando predefinito per creare la tabella pivot all'interno della cache pivot.

8. Inserisci righe, colonne, filtri e valori

Poiché la tabella pivot è pronta, è necessario iniziare ad aggiungere i parametri all'interno di filtri, righe, colonne e valori di aggregazione. Puoi usare VBA pivotfields comando per iniziare a dichiarare i dettagli.

Per aggiungere valori di filtro:

Con foglio attivo. Tabelle pivot("MUODemoTable").PivotFields("Regione")
.Orientamento = xlPageField
FINECon

Per aggiungere valori di riga:

Con foglio attivo. Tabelle pivot("MUODemoTable").PivotFields("Sottocategoria")
.Orientamento = xlRowField
FINECon

Per aggiungere valori di colonna:

Con foglio attivo. Tabelle pivot("MUODemoTable").PivotFields("Stato")
.Orientamento = xlColumnField
FINECon

Per aggiungere valori di aggregazione:

Con foglio attivo. Tabelle pivot("MUODemoTable").PivotFields("Saldi")
.Orientamento = xlDataField
.Funzione = xlSomma
FINECon

È essenziale notare che è necessario fare riferimento al foglio attivo (foglio pivot), seguito dal nome della tabella pivot e dal nome della variabile. Quando è necessario aggiungere filtri, righe e colonne, è possibile passare da una sintassi all'altra, che include quanto segue:

  • xlPageField: Per aggiungere filtri.
  • xlRowField: Per aggiungere righe.
  • xlRowField: Per aggiungere colonne.

Infine, puoi utilizzare il xlDataField comando per calcolare le aggregazioni di valori. Puoi utilizzare altre funzioni di aggregazione come xlSum, xlAverage, xlCount, xlMax, xlMin e xlProduct.

9. Esecuzione del codice VBA di Excel per creare pivot automatici

Infine, quando l'intero programma è pronto, puoi eseguirlo premendo F5 o facendo clic sul giocare pulsante. Quando torni al foglio pivot nella tua cartella di lavoro, vedrai che una nuova tabella pivot è pronta per essere rivista.

Se vuoi vedere un'esecuzione passo dopo passo di come il comando di codice viene riprodotto riga per riga, puoi navigare nell'editor di codice e premere F8 parecchie volte. In questo modo, puoi vedere come funziona ogni riga di codice e come VBA crea automaticamente i tuoi pivot.

Imparare a codificare automaticamente le tabelle pivot

I pivot non sono limitati solo a MS Excel. I linguaggi di programmazione come Python ti consentono di creare pivot ottimizzati con poche righe di codice.

L'ottimizzazione dei dati non può essere più facile di così. Puoi selezionare e scegliere in modo efficace i tuoi comandi in Python e realizzare facilmente una struttura pivot simile a Excel.