Questo tutorial dimostrerà come utilizzare il filtro tabella pivot in VBA.
Le tabelle pivot sono uno strumento dati eccezionalmente potente di Excel. Le tabelle pivot ci consentono di analizzare e interpretare grandi quantità di dati raggruppando e riassumendo campi e righe. Possiamo applicare filtri alle nostre tabelle pivot per consentirci di vedere rapidamente i dati che ci interessano.
Innanzitutto, dobbiamo creare una tabella Pivot per i nostri dati. (Fare clic qui per la nostra guida alla tabella pivot VBA).
Creazione di un filtro basato su un valore di cella
Puoi filtrare in una tabella pivot utilizzando VBA in base ai dati contenuti in un valore di cella: possiamo filtrare sul campo Pagina o su un campo Riga (ad esempio sul campo Fornitore sopra o sul campo Oper che si trova nella colonna Etichette riga ).
In una cella vuota a destra della tabella Pivot, crea una cella per contenere il filtro, quindi digita i dati nella cella in cui desideri filtrare la tabella Pivot.
Crea la seguente macro VBA:
1234567 | SottofiltroPaginaValore()Dim pvFld As PivotFieldDim strFilter As StringImposta pvFld = ActiveSheet.PivotTables("PivotTable1").PivotFields("Fornitore")strFilter = ActiveWorkbook.Sheets("Sheet1").Range("M4").ValuepvFld.CurrentPage = strFilterFine sottotitolo |
Esegui la macro per applicare il filtro.
Per cancellare il filtro, crea la seguente macro:
12345 | Sotto CancellaFiltro()Dim pTbl come tabella pivotImposta pTbl = ActiveSheet.PivotTables("PivotTable1")pTbl.ClearAllFiltersFine sottotitolo |
Il filtro verrà quindi rimosso.
Possiamo quindi modificare i criteri di filtro per filtrare su una riga nella tabella Pivot anziché sulla Pagina corrente.
Digitare la seguente macro ci consentirà quindi di filtrare sulla riga (si noti che il campo pivot su cui filtrare è ora l'Operatore anziché il Fornitore).
1234567 | Sub FilterRowValue()Dim pvFld As PivotFieldDim strFilter As StringImposta pvFld = ActiveSheet.PivotTables("PivotTable1").PivotFields("Oper")strFilter = ActiveWorkbook.Sheets("Sheet1").Range("M4").ValuepvFld.PivotFilters.Add2 xlCaptionEquals, , strFilterFine sottotitolo |
Esegui la macro per applicare il filtro.
Utilizzo di più criteri in un filtro pivot
Possiamo aggiungere al filtro Valore riga sopra aggiungendo criteri aggiuntivi.
Tuttavia, poiché il filtro standard nasconde le righe non necessarie, è necessario scorrere i criteri e mostrare quelle richieste, nascondendo quelle non richieste. Questo viene fatto creando una variabile Array e usando un paio di Loop nel codice.
1234567891011121314151617181920212223 | SottofiltroMultipleRowItems()Dim vArray come varianteDim i As Integer, j As IntegerDim pvFld As PivotFieldImposta pvFld = ActiveSheet.PivotTables("PivotTable1").PivotFields("Oper")vArray = Intervallo ("M4: M5")pvFld.ClearAllFiltersCon pvFldPer i = 1 a pvFld.PivotItems.Countj = 1Do While j <= UBound(vArray, 1) - LBound(vArray, 1) + 1Se pvFld.PivotItems(i).Name = vArray(j, 1) AllorapvFld.PivotItems(pvFld.PivotItems(i).Name).Visible = TrueEsci FaiAltropvFld.PivotItems(pvFld.PivotItems(i).Name).Visible = FalseFinisci sej = j + 1Ciclo continuoAvanti ioTermina conFine sottotitolo |
Creazione di un filtro basato su una variabile
Possiamo usare gli stessi concetti per creare filtri basati su variabili nel nostro codice piuttosto che sul valore in una cella. Questa volta, la variabile di filtro (strFilter) viene popolata nel codice stesso (es: hardcoded nella macro).
1234567 | Sub FilterTextValue()Dim pvFld As PivotFieldDim strFilter As StringImposta pvFld = ActiveSheet.PivotTables("PivotTable1").PivotFields("Fornitore")strFilter = "THOMAS S"pvFld.CurrentPage = strFilterFine sottotitolo |