Guida VBA alle tabelle pivot

Questo tutorial dimostrerà come lavorare con le tabelle pivot utilizzando VBA.

Le tabelle pivot sono strumenti di riepilogo dei dati che puoi utilizzare per trarre informazioni e riepiloghi chiave dai tuoi dati. Facciamo un esempio: abbiamo un set di dati sorgente nelle celle A1:D21 contenente i dettagli dei prodotti venduti, mostrati di seguito:

Utilizzo di GetPivotData per ottenere un valore

Si supponga di avere una tabella pivot denominata Tabella pivot1 con Sales nel campo Valori/Dati, Prodotto come campo Righe e Regione come campo Colonne. È possibile utilizzare il metodo PivotTable.GetPivotData per restituire valori dalle tabelle pivot.

Il codice seguente restituirà $ 1.130,00 (le vendite totali per la regione orientale) dalla tabella pivot:

1 MsgBox ActiveCell.PivotTable.GetPivotData("Vendite", "Regione", "Est")

In questo caso, Sales è "DataField", "Field1" è la regione e "Item1" è East.

Il codice seguente restituirà $ 980 (le vendite totali per il prodotto ABC nella regione nord) dalla tabella pivot:

1 MsgBox ActiveCell.PivotTable.GetPivotData("Vendite", "Prodotto", "ABC", "Regione", "Nord")

In questo caso, Sales è "DataField", "Field1" è Product, "Item1" è ABC, "Field2" è Region e "Item2" è North.

Puoi anche includere più di 2 campi.

La sintassi per GetPivotData è:

Ottieni dati pivot (Campo dati, Campo1, Articolo1, Campo2, Articolo2… ) dove:

Parametro Descrizione
Campo dati Campo dati come vendite, quantità ecc. che contiene numeri.
Campo 1 Nome di una colonna o di un campo riga nella tabella.
Articolo 1 Nome di un elemento nel campo 1 (facoltativo).
Campo 2 Nome di una colonna o di un campo riga nella tabella (facoltativo).
Articolo 2 Nome di un elemento nel campo 2 (facoltativo).

Creazione di una tabella pivot su un foglio

Per creare una tabella pivot basata sull'intervallo di dati sopra, sulla cella J2 su Sheet1 della cartella di lavoro attiva, utilizzeremmo il seguente codice:

1234567891011 Fogli di lavoro("Foglio1").Celle(1, 1).SelezionaActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _"Foglio1!R1C1:R21C4", Version:=xlPivotTableVersion15).CreatePivotTable _TableDestination:="Sheet1!R2C10", TableName:="PivotTable1", DefaultVersion _:=xlVersione tabella pivot15Fogli("Foglio1").Seleziona

Il risultato è:

Creazione di una tabella pivot su un nuovo foglio

Per creare una tabella pivot basata sull'intervallo di dati sopra, su un nuovo foglio, della cartella di lavoro attiva, utilizzeremmo il seguente codice:

12345678910111213 Fogli di lavoro("Foglio1").Celle(1, 1).SelezionaFogli.AggiungiActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _"Foglio1!R1C1:R21C4", Version:=xlPivotTableVersion15).CreatePivotTable _TableDestination:="Sheet2!R3C1", TableName:="PivotTable1", DefaultVersion _:=xlVersione tabella pivot15Fogli("Foglio2").Seleziona

Aggiunta di campi alla tabella pivot

È possibile aggiungere campi alla tabella pivot appena creata denominata tabella pivot1 in base all'intervallo di dati sopra. Nota: il foglio contenente la tabella pivot deve essere il foglio attivo.

Per aggiungere Prodotto al campo Righe, utilizzerai il seguente codice:

123 ActiveSheet.PivotTables("PivotTable1").PivotFields("Product").Orientation = xlRowFieldActiveSheet.PivotTables("PivotTable1").PivotFields("Product").Position = 1

Per aggiungere Regione al campo Colonne, utilizzerai il seguente codice:

123 ActiveSheet.PivotTables("PivotTable1").PivotFields("Region").Orientation = xlColumnFieldActiveSheet.PivotTables("PivotTable1").PivotFields("Region").Position = 1

Per aggiungere Vendite alla sezione Valori con il formato del numero di valuta, utilizzerai il seguente codice:

123456789 ActiveSheet.PivotTables("PivotTable1").AddDataField ActiveSheet.PivotTables( _"Tabella pivot1").PivotFields("Sales"), "Somma delle vendite", xlSumCon ActiveSheet.PivotTables("PivotTable1").PivotFields("Somma delle vendite").NumberFormat = "$#,##0.00"Termina con

Il risultato è:

Modifica del layout del report della tabella pivot

Puoi modificare il layout del rapporto della tua tabella pivot. Il codice seguente cambierà il layout del report della tabella pivot in formato tabulare:

1 ActiveSheet.PivotTables("PivotTable1").TableStyle2 = "PivotStyleLight18"

Eliminazione di una tabella pivot

Puoi eliminare una tabella pivot utilizzando VBA. Il codice seguente eliminerà la tabella pivot denominata tabella pivot1 sul foglio attivo:

12 ActiveSheet.PivotTables("PivotTable1").PivotSelect "", xlDataAndLabel, TrueSelezione.Cancella contenuto

Formattare tutte le tabelle pivot in una cartella di lavoro

Puoi formattare tutte le tabelle pivot in una cartella di lavoro utilizzando VBA. Il codice seguente utilizza una struttura di ciclo per scorrere tutti i fogli di una cartella di lavoro ed eliminare tutte le tabelle pivot nella cartella di lavoro:

12345678910111213 Sub FormattingAllThePivotTablesInAWorkbook()Sett deboli Come foglio di lavoroDim wb come cartella di lavoroImposta wb = ActiveWorkbookDim pt come tabella pivotPer ogni sett. in fogliPer ogni punto in wks.PivotTablespt.TableStyle2 = "PivotStyleLight15"Punto successivoSettimane successiveFine sottotitolo

Per saperne di più su come utilizzare i loop in VBA, fai clic qui.

Rimozione dei campi di una tabella pivot

Puoi rimuovere i campi in una tabella pivot utilizzando VBA. Il codice seguente rimuoverà il campo Prodotto nella sezione Righe da una tabella pivot denominata Tabella pivot1 nel foglio attivo:

12 ActiveSheet.PivotTables("PivotTable1").PivotFields("Prodotto").Orientation = _xlNascosto

Creazione di un filtro

È stata creata una tabella pivot denominata Tabella pivot1 con Prodotto nella sezione Righe e Vendite nella sezione Valori. Puoi anche creare un filtro per la tua tabella pivot utilizzando VBA. Il codice seguente creerà un filtro basato su Regione nella sezione Filtri:

123 ActiveSheet.PivotTables("PivotTable1").PivotFields("Region").Orientation = xlPageFieldActiveSheet.PivotTables("PivotTable1").PivotFields("Region").Position = 1

Per filtrare la tabella pivot in base a un singolo elemento del report, in questo caso la regione orientale, utilizzare il codice seguente:

12345 ActiveSheet.PivotTables("PivotTable1").PivotFields("Region").ClearAllFiltersActiveSheet.PivotTables("PivotTable1").PivotFields("Region").CurrentPage = _"Est"

Supponiamo che tu voglia filtrare la tua tabella pivot in base a più regioni, in questo caso Est e Nord, utilizzerai il seguente codice:

1234567891011121314 ActiveSheet.PivotTables("PivotTable1").PivotFields("Region").Orientation = xlPageFieldActiveSheet.PivotTables("PivotTable1").PivotFields("Region").Position = 1ActiveSheet.PivotTables("PivotTable1").PivotFields("Regione"). _EnableMultiplePageItems = TrueCon ActiveSheet.PivotTables("PivotTable1").PivotFields("Regione").PivotItems("Sud").Visible = False.PivotItems("West").Visible = FalseTermina con

Aggiornare la tua tabella pivot

Puoi aggiornare la tua tabella pivot in VBA. Utilizzerai il seguente codice per aggiornare una tabella specifica chiamata PivotTable1 in VBA:

1 ActiveSheet.PivotTables("PivotTable1").PivotCache.Refresh
wave wave wave wave wave