Pivot Tablolar için VBA Kılavuzu

Bu öğretici, VBA kullanarak Pivot Tablolarla nasıl çalışılacağını gösterecektir.

Pivot Tablolar, verilerinizden önemli içgörüler ve özetler çıkarmak için kullanabileceğiniz veri özetleme araçlarıdır. Bir örneğe bakalım: A1:D21 hücrelerinde satılan ürünlerin ayrıntılarını içeren, aşağıda gösterilen bir kaynak veri setimiz var:

Bir Değer Elde Etmek için GetPivotData'yı Kullanma

Değerler/Veri Alanında Satışlar, Satırlar alanı olarak Ürün ve Sütunlar alanı olarak Bölge ile PivotTable1 adında bir PivotTable'ınız olduğunu varsayalım. Özet Tablolardan değerler döndürmek için PivotTable.GetPivotData yöntemini kullanabilirsiniz.

Aşağıdaki kod, PivotTable'dan 1.130,00 ABD Doları (Doğu Bölgesi için toplam satış) döndürür:

1 MsgBox ActiveCell.PivotTable.GetPivotData("Satış", "Bölge", "Doğu")

Bu durumda Satış, “Veri Alanı”, “Alan1” Bölge ve “Öğe1” Doğu'dur.

Aşağıdaki kod, Pivot Tablodan 980 ABD Doları (Kuzey Bölgesindeki ABC Ürünü için toplam satış) döndürür:

1 MsgBox ActiveCell.PivotTable.GetPivotData("Satış", "Ürün", "ABC", "Bölge", "Kuzey")

Bu durumda Satış, "Veri Alanı", "Alan1" Ürün, "Öğe1" ABC, "Alan2" Bölge ve "Öğe2" Kuzey'dir.

Ayrıca 2'den fazla alan da ekleyebilirsiniz.

GetPivotData sözdizimi şöyledir:

GetPivotData (Veri alanı, Alan1, Madde 1, Alan2, Öğe2… ) nerede:

Parametre Açıklama
Veri alanı Sayıların yer aldığı satış, miktar vb. veri alanı.
Alan 1 Tablodaki bir sütun veya satır alanının adı.
Madde 1 Alan 1'deki bir öğenin adı (İsteğe bağlı).
Alan 2 Tablodaki bir sütun veya satır alanının adı (İsteğe bağlı).
2. öğe Alan 2'deki bir öğenin adı (İsteğe bağlı).

Bir Sayfada Özet Tablo Oluşturma

Etkin çalışma kitabının Sayfa1'indeki J2 hücresinde yukarıdaki veri aralığına dayalı bir Özet Tablo oluşturmak için aşağıdaki kodu kullanırdık:

1234567891011 Çalışma Sayfaları("Sayfa1").Hücreler(1, 1).SeçActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _"Sheet1!R1C1:R21C4", Sürüm:=xlPivotTableVersion15).CreatePivotTable _TableDestination:="Sheet1!R2C10", TableName:="PivotTable1", DefaultVersion _:=xlPivotTableVersion15Sayfalar("Sayfa1").Seçin

Sonuç:

Yeni Bir Sayfada Pivot Tablo Oluşturma

Aktif çalışma kitabının yeni bir sayfasında yukarıdaki veri aralığına dayalı bir Pivot Tablo oluşturmak için aşağıdaki kodu kullanırdık:

12345678910111213 Çalışma Sayfaları("Sayfa1").Hücreler(1, 1).SeçE-Tablolar.EkleActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _"Sheet1!R1C1:R21C4", Sürüm:=xlPivotTableVersion15).CreatePivotTable _TableDestination:="Sheet2!R3C1", TableName:="PivotTable1", DefaultVersion _:=xlPivotTableVersion15Sayfalar("Sayfa2").Seçin

Özet Tabloya Alan Ekleme

Yukarıdaki veri aralığına dayalı olarak PivotTable1 adlı yeni oluşturulan Pivot Tablosuna alanlar ekleyebilirsiniz. Not: Pivot Tablonuzu içeren sayfanın Aktif Sayfa olması gerekir.

Satırlar Alanına Ürün eklemek için aşağıdaki kodu kullanırsınız:

123 ActiveSheet.PivotTables("PivotTable1").PivotFields("Ürün").Orientation = xlRowFieldActiveSheet.PivotTables("PivotTable1").PivotFields("Ürün").Position = 1

Sütunlar Alanına Bölge eklemek için aşağıdaki kodu kullanırsınız:

123 ActiveSheet.PivotTables("PivotTable1").PivotFields("Bölge").Orientation = xlColumnFieldActiveSheet.PivotTables("PivotTable1").PivotFields("Bölge").Position = 1

Para birimi numarası biçimiyle Değerler Bölümüne Satış eklemek için aşağıdaki kodu kullanırsınız:

123456789 ActiveSheet.PivotTables("PivotTable1").AddDataField ActiveSheet.PivotTables( _"PivotTable1").PivotFields("Satış"), "Satış Toplamı", xlSumActiveSheet.PivotTables("PivotTable1").PivotFields("Sats Toplamı") ile.NumberFormat = "$#,##0.00"İle bitmek

Sonuç:

Pivot Tablonun Rapor Düzenini Değiştirme

Pivot Tablonuzun Rapor Düzenini değiştirebilirsiniz. Aşağıdaki kod, Pivot Tablonuzun Rapor Düzenini Tablo Formu olarak değiştirecektir:

1 ActiveSheet.PivotTables("PivotTable1").TableStyle2 = "PivotStyleLight18"

Pivot Tabloyu Silme

Bir Özet Tabloyu VBA kullanarak silebilirsiniz. Aşağıdaki kod, Etkin Sayfada Özet Tablo1 adlı Özet Tabloyu siler:

12 ActiveSheet.PivotTables("PivotTable1").PivotSelect "", xlDataAndLabel, TrueSelection.ClearContents

Bir Çalışma Kitabındaki tüm Özet Tabloları Biçimlendirin

Bir Çalışma Kitabındaki tüm Özet Tabloları VBA kullanarak biçimlendirebilirsiniz. Aşağıdaki kod, bir çalışma kitabının tüm sayfaları arasında döngü yapmak ve çalışma kitabındaki tüm Pivot Tabloları silmek için bir döngü yapısı kullanır:

12345678910111213 Alt BiçimlendirmeAllThePivotTablesInAAWorkbook()Çalışma Sayfası Olarak Haftalar DimÇalışma Kitabı Olarak Dim wbwb = ActiveWorkbook'u ayarlaÖzet Tablo Olarak KarartWb.Sheets'de Her Hafta İçinHer pt için wks.PivotTable'lardapt.TableStyle2 = "PivotStyleLight15"Sonraki noktaSonraki haftaAlt Bitiş

VBA'da Döngülerin nasıl kullanılacağı hakkında daha fazla bilgi edinmek için buraya tıklayın.

Pivot Tablonun Alanlarını Kaldırma

VBA kullanarak Pivot Tablodaki alanları kaldırabilirsiniz. Aşağıdaki kod, Satırlar bölümündeki Ürün alanını Etkin Sayfada Özet Tablo1 adlı bir Özet Tablodan kaldırır:

12 ActiveSheet.PivotTables("PivotTable1").PivotFields("Ürün").Orientation = _xlGizli

Filtre Oluşturma

Satırlar bölümünde Ürün, Değerler Bölümünde Satışlar ile PivotTable1 adında bir Pivot Tablo oluşturulmuştur. Ayrıca VBA kullanarak Pivot Tablonuz için bir Filtre oluşturabilirsiniz. Aşağıdaki kod, Filtreler bölümünde Bölge'ye dayalı bir filtre oluşturacaktır:

123 ActiveSheet.PivotTables("PivotTable1").PivotFields("Bölge").Orientation = xlPageFieldActiveSheet.PivotTables("PivotTable1").PivotFields("Bölge").Position = 1

Pivot Tablonuzu, bu durumda Doğu bölgesinde Tek Rapor Öğesine göre filtrelemek için aşağıdaki kodu kullanırsınız:

12345 ActiveSheet.PivotTables("PivotTable1").PivotFields("Bölge").ClearAllFiltersActiveSheet.PivotTables("PivotTable1").PivotFields("Bölge").CurrentPage = _"Doğu"

Pivot Tablonuzu birden çok bölgeye göre filtrelemek istediğinizi varsayalım, bu durumda Doğu ve Kuzey, aşağıdaki kodu kullanırsınız:

1234567891011121314 ActiveSheet.PivotTables("PivotTable1").PivotFields("Bölge").Orientation = xlPageFieldActiveSheet.PivotTables("PivotTable1").PivotFields("Bölge").Position = 1ActiveSheet.PivotTables("PivotTable1").PivotFields("Bölge"). _EnableMultiplePageItems = DoğruActiveSheet.PivotTables("PivotTable1").PivotFields("Region") ile.PivotItems("Güney").Görünür = Yanlış.PivotItems("Batı").Görünür = Yanlışİle bitmek

Pivot Tablonuzu Yenileme

Pivot Tablonuzu VBA'da yenileyebilirsiniz. VBA'da PivotTable1 adlı belirli bir tabloyu yenilemek için aşağıdaki kodu kullanırsınız:

1 ActiveSheet.PivotTables("PivotTable1").PivotCache.Refresh
wave wave wave wave wave