Vba kullanarak pivottable'ları filtreleme (örneklerle)


VBA kullanarak Excel’deki pivot tabloları filtrelemek için aşağıdaki yöntemleri kullanabilirsiniz:

Yöntem 1: Pivot tabloyu bir değere göre filtreleme

 SubFilterPivotTable ()
   Dim pf As PivotField
   Dim myFilter As String
   Set pf = ActiveSheet.PivotTables(" PivotTable1 ").PivotFields(" Position ")
   myFilter = ActiveWorkbook.Sheets(" Sheet1 ").Range(" J2 ").Value
   pf.PivotFilters.Add2 xlCaptionEquals, , myFilter
End Sub

Bu özel makro, PivotTable1 adlı pivot tabloyu, yalnızca pivot tablonun Konum sütunundaki değerin Sayfa1’in J2 hücresindeki değere eşit olduğu satırları gösterecek şekilde filtreleyecektir.

Yöntem 2: PivotTable’ı birden çok değere göre filtreleme

 Sub FilterPivotTableMultiple()
  Dim v Ace Variant
  Dim i As Integer, j As Integer
  Dim pf As PivotField
  Set pf = ActiveSheet.PivotTables(" PivotTable1 ").PivotFields(" Position ")
  
  'specify range with values to filter on
  v = Range(" J2:J3 ")
  
  'clear existing filters
  pf.ClearAllFilters
  
  'apply filter to pivot table
  With pf
    For i = 1 TB pf.PivotItems.Count
      j = 1
      Do While j <= UBound(v, 1) - LBound(v, 1) + 1
         If pf.PivotItems(i).Name = v(j, 1) Then
           pf.PivotItems(pf.PivotItems(i).Name).Visible = True
           Exit Do
        Else
          pf.PivotItems(pf.PivotItems(i).Name).Visible = False
       End If
        j = j + 1
      Loop
    Next i
 End With
End Sub

Bu özel makro, PivotTable1 adı verilen pivot tabloyu, yalnızca pivot tablonun Konum sütunundaki değerin J2:J3 hücre aralığındaki değerlerden birine eşit olduğu satırları görüntüleyecek şekilde filtreleyecektir.

Yöntem 3: Özet Tablo Filtrelerini Kaldırma

 SubClearPivotTableFilter ()
   Dim pt As PivotTable
   Set pt = ActiveSheet.PivotTables(" PivotTable1 ")
   pt.ClearAllFilters
End Sub

Bu özel makro, PivotTable1 adı verilen pivot tablodaki tüm filtreleri temizleyecektir.

Aşağıdaki örnekler bu yöntemlerin her birinin pratikte nasıl kullanılacağını göstermektedir.

Örnek 1: Pivot tabloyu bir değere göre filtreleme

Farklı takım ve pozisyonlardaki basketbolcuların attığı sayıları özetlemek için Excel’deki bir veri setinden bir pivot tablo oluşturduğumuzu varsayalım:

Diyelim ki pivot tabloyu yalnızca Konum sütunundaki değeri Koruma olan satırları gösterecek şekilde filtrelemek istiyoruz.

Bunun için aşağıdaki makroyu oluşturabiliriz:

 SubFilterPivotTable ()
   Dim pf As PivotField
   Dim myFilter As String
   Set pf = ActiveSheet.PivotTables(" PivotTable1 ").PivotFields(" Position ")
   myFilter = ActiveWorkbook.Sheets(" Sheet1 ").Range(" J2 ").Value
   pf.PivotFilters.Add2 xlCaptionEquals, , myFilter
End Sub

Bu makroyu çalıştırdığımızda, pivot tablo yalnızca Konum sütunundaki değeri Koruma olan satırları gösterecek şekilde otomatik olarak filtrelenir:

VBA Filtrelerinin Özet Tablosu

Pivot tablo, yalnızca Konum sütunundaki değeri Koruma olan satırları görüntüleyecek şekilde filtrelendi.

Örnek 2: Bir pivot tabloyu birden çok değere göre filtreleme

Bunun yerine pivot tabloyu yalnızca Konum sütunundaki değeri Koruma veya Merkez olan satırları gösterecek şekilde filtrelemek istediğimizi varsayalım.

Bunun için aşağıdaki makroyu oluşturabiliriz:

 Sub FilterPivotTableMultiple()
  Dim v Ace Variant
  Dim i As Integer, j As Integer
  Dim pf As PivotField
  Set pf = ActiveSheet.PivotTables(" PivotTable1 ").PivotFields(" Position ")
  
  'specify range with values to filter on
  v = Range(" J2:J3 ")
  
  'clear existing filters
  pf.ClearAllFilters
  
  'apply filter to pivot table
  With pf
    For i = 1 TB pf.PivotItems.Count
      j = 1
      Do While j <= UBound(v, 1) - LBound(v, 1) + 1
         If pf.PivotItems(i).Name = v(j, 1) Then
           pf.PivotItems(pf.PivotItems(i).Name).Visible = True
           Exit Do
        Else
          pf.PivotItems(pf.PivotItems(i).Name).Visible = False
       End If
        j = j + 1
      Loop
    Next i
 End With
End Sub

Bu makroyu çalıştırdığımızda, pivot tablo yalnızca Konum sütunundaki değeri Koruma veya Merkez olan satırları gösterecek şekilde otomatik olarak filtrelenir:

Birden çok değere dayalı VBA filtresinin pivot tablosu

Pivot tablo, yalnızca Konum sütunundaki değeri Koruma veya Merkez olan satırları gösterecek şekilde filtrelendi.

Ek kaynaklar

Aşağıdaki eğitimlerde VBA’da diğer ortak görevlerin nasıl gerçekleştirileceği açıklanmaktadır:

VBA: pivot tabloları nasıl yenilenir
VBA: yinelenen değerler nasıl kaldırılır
VBA: Aralıktaki satır sayısı nasıl sayılır?

Yorum ekle

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir