VBA - rakurstabulas filtrs

Šī 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š
wave wave wave wave wave