Bu eğitim, VBA'da Pivot Tablo Filtresinin nasıl kullanılacağını gösterecektir.
Pivot tablolar, Excel'in olağanüstü güçlü bir veri aracıdır. Pivot tablolar, alanları ve satırları gruplandırarak ve özetleyerek büyük miktarda veriyi analiz etmemizi ve yorumlamamızı sağlar. Bizimle ilgili verileri hızlı bir şekilde görmemizi sağlamak için pivot tablolarımıza filtreler uygulayabiliriz.
Öncelikle verilerimiz için bir Pivot tablo oluşturmamız gerekiyor. (VBA Pivot Tablo Kılavuzumuz için Buraya Tıklayın).
Hücre Değerine Dayalı Filtre Oluşturma
Bir hücre değerinde bulunan verilere dayalı olarak VBA kullanarak bir Pivot Tabloda filtre uygulayabilirsiniz - Sayfa alanında veya bir Satır alanında (örneğin yukarıdaki Tedarikçi alanında veya Satır Etiketleri sütunundaki Oper alanında) filtre uygulayabiliriz. ).
Pivot tablosunun sağındaki boş bir hücrede, filtreyi tutacak bir hücre oluşturun ve ardından verileri Pivot tablosunu filtrelemek istediğiniz hücreye yazın.
Aşağıdaki VBA makrosunu oluşturun:
1234567 | Alt FilterPageValue()PivotField Olarak Dim pvFldDim strFilter As StringpvFld = ActiveSheet.PivotTables("PivotTable1").PivotFields("Tedarikçi") olarak ayarlayınstrFilter = ActiveWorkbook.Sheets("Sayfa1").Range("M4").ValuepvFld.CurrentPage = strFilterAlt Bitiş |
Filtreyi uygulamak için makroyu çalıştırın.
Filtreyi temizlemek için aşağıdaki makroyu oluşturun:
12345 | Alt ClearFilter()PivotTable Olarak Karart pTblpTbl = ActiveSheet.PivotTables("PivotTable1") olarak ayarlayınpTbl.ClearAllFiltersAlt Bitiş |
Ardından filtre kaldırılacaktır.
Ardından, Geçerli Sayfa yerine Pivot tablosundaki bir satırda filtrelemek için filtre kriterlerini değiştirebiliriz.
Aşağıdaki makroyu yazmak, Satırda filtreleme yapmamızı sağlayacaktır (filtrelenecek Pivot Alanının artık Tedarikçi yerine Oper olduğunu unutmayın).
1234567 | Alt FilterRowValue()PivotField Olarak Dim pvFldDim strFilter As StringpvFld = ActiveSheet.PivotTables("PivotTable1").PivotFields("Oper") olarak ayarlayınstrFilter = ActiveWorkbook.Sheets("Sayfa1").Range("M4").ValuepvFld.PivotFilters.Add2 xlCaptionEquals, , strFilterAlt Bitiş |
Filtreyi uygulamak için makroyu çalıştırın.
Özet Filtrede Birden Çok Ölçüt Kullanma
Yukarıdaki Satır değeri filtresine ek kriterler ekleyerek ekleyebiliriz.
Ancak standart filtre, gerekli olmayan satırları gizlediği için, kriterler arasında dolaşıp gerekli olanları gösterirken, gerekli olmayanları gizlememiz gerekir. Bu, bir Array değişkeni yaratılarak ve kodda birkaç Döngü kullanılarak yapılır.
1234567891011121314151617181920212223 | Sub FilterMultipleRowItems()Varyant Olarak Dim vArrayDim i As Integer, j As IntegerPivotField Olarak Dim pvFldpvFld = ActiveSheet.PivotTables("PivotTable1").PivotFields("Oper") olarak ayarlayınvArray = Aralık("M4:M5")pvFld.ClearAllFilterspvFld ilei = 1 için pvFld.PivotItems.Count içinj = 1J iken Yap <= UBound(vArray, 1) - LBound(vArray, 1) + 1pvFld.PivotItems(i).Name = vArray(j, 1) isepvFld.PivotItems(pvFld.PivotItems(i).Name).Visible = TrueÇıkış YapBaşkapvFld.PivotItems(pvFld.PivotItems(i).Name).Visible = FalseBitirj = j + 1Döngüsonraki benİle bitmekAlt Bitiş |
Bir Değişkene Dayalı Filtre Oluşturma
Bir hücredeki değer yerine kodumuzdaki değişkenlere dayalı filtreler oluşturmak için aynı kavramları kullanabiliriz. Bu sefer filtre değişkeni (strFilter) kodun kendisinde doldurulur (örn.: Makroya sabit kodlanmış).
1234567 | Alt FilterTextValue()PivotField Olarak Dim pvFldDim strFilter As StringpvFld = ActiveSheet.PivotTables("PivotTable1").PivotFields("Tedarikçi") olarak ayarlayınstrFilter = "THOMAS S"pvFld.CurrentPage = strFilterAlt Bitiş |