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:
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:
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?