Šī apmācība parādīs, kā izmantot rakurstabulas filtru VBA.
Pivot tabulas ir ārkārtīgi spēcīgs Excel datu rīks. Pivot tabulas ļauj mums analizēt un interpretēt lielu datu apjomu, grupējot un apkopojot laukus un rindas. Mēs varam izmantot filtrus mūsu rakurstabulās, lai mēs varētu ātri redzēt mums atbilstošos datus.
Pirmkārt, mums ir jāizveido Pivot tabula mūsu datiem. (Noklikšķiniet šeit, lai iegūtu mūsu VBA rakurstabulas rokasgrāmatu).
Filtra izveide, pamatojoties uz šūnas vērtību
Pivot tabulā varat filtrēt, izmantojot VBA, pamatojoties uz šūnas vērtības datiem - mēs varam filtrēt laukā Lapa vai Rindas laukā (piemēram, laukā Piegādātājs iepriekš vai Laukā Oper, kas atrodas slejā Rindu iezīmes) ).
Tukšā šūnā pa labi no rakurstabulas izveidojiet šūnu filtra turēšanai un pēc tam ierakstiet datus šūnā, kurā vēlaties filtrēt rakurstabulu.
Izveidojiet šādu VBA makro:
1234567 | ApakšfiltrsPageValue ()Dim pvFld Kā PivotFieldDim strFilter kā virkneIestatiet pvFld = ActiveSheet.PivotTables ("PivotTable1"). PivotFields ("piegādātājs")strFilter = ActiveWorkbook.Sheets ("Sheet1"). Diapazons ("M4"). VērtībapvFld.CurrentPage = strFilterBeigu apakš |
Palaidiet makro, lai lietotu filtru.
Lai notīrītu filtru, izveidojiet šādu makro:
12345 | Sub ClearFilter ()Dim pTbl kā PivotTableIestatiet pTbl = ActiveSheet.PivotTables ("PivotTable1")pTbl.ClearAllFiltersBeigu apakš |
Pēc tam filtrs tiks noņemts.
Pēc tam mēs varam mainīt filtra kritērijus, lai filtrētu rindā rakurstabulā, nevis pašreizējā lapā.
Ievadot šādu makro, mēs varēsim filtrēt rindu (ņemiet vērā, ka šarnīra lauks, kurā filtrēt, tagad ir Oper, nevis piegādātājs).
1234567 | ApakšfiltrsRowValue ()Dim pvFld Kā PivotFieldDim strFilter kā virkneIestatiet pvFld = ActiveSheet.PivotTables ("PivotTable1"). PivotFields ("Oper")strFilter = ActiveWorkbook.Sheets ("Sheet1"). Diapazons ("M4"). VērtībapvFld.PivotFilters.Add2 xlCaptionEquals,, strFilterBeigu apakš |
Palaidiet makro, lai lietotu filtru.
Vairāku kritēriju izmantošana rakursfiltrā
Mēs varam pievienot rindas vērtības filtru iepriekš, pievienojot papildu kritērijus.
Tomēr, tā kā standarta filtrs slēpj rindas, kas nav obligātas, mums ir jāatkārto kritēriji un jāparāda nepieciešamie, vienlaikus slēpjot tos, kas nav nepieciešami. Tas tiek darīts, izveidojot masīva mainīgo un izmantojot pāris cilpas kodā.
1234567891011121314151617181920212223 | ApakšfiltrsMultipleRowItems ()Dim vArray kā variantsDim i Kā vesels skaitlis, j Kā vesels skaitlisDim pvFld Kā PivotFieldIestatiet pvFld = ActiveSheet.PivotTables ("PivotTable1"). PivotFields ("Oper")vArray = Diapazons ("M4: M5")pvFld.ClearAllFiltersAr pvFldAttiecībā uz i = 1 uz pvFld.PivotItems.Countj = 1Darīt, kamēr j <= UBound (vArray, 1) - LBound (vArray, 1) + 1Ja pvFld.PivotItems (i). Nosaukums = vArray (j, 1) TadpvFld.PivotItems (pvFld.PivotItems (i) .Name) .Visible = TrueIziet DoCitādipvFld.PivotItems (pvFld.PivotItems (i) .Name) .Visible = FalseBeigas Jaj = j + 1CilpaTālāk iBeigt arBeigu apakš |
Filtra izveide, pamatojoties uz mainīgo
Mēs varam izmantot tos pašus jēdzienus, lai izveidotu filtrus, kuru pamatā ir mūsu koda mainīgie, nevis šūnas vērtība. Šoreiz filtra mainīgais (strFilter) tiek aizpildīts pašā kodā (piemēram, makro kodēts).
1234567 | ApakšfiltrsTextValue ()Dim pvFld Kā PivotFieldDim strFilter kā virkneIestatiet pvFld = ActiveSheet.PivotTables ("PivotTable1"). PivotFields ("piegādātājs")strFilter = "THOMAS S"pvFld.CurrentPage = strFilterBeigu apakš |