- Bir Değer Elde Etmek için GetPivotData'yı Kullanma
- Bir Sayfada Özet Tablo Oluşturma
- Yeni Bir Sayfada Pivot Tablo Oluşturma
- Özet Tabloya Alan Ekleme
- Pivot Tablonun Rapor Düzenini Değiştirme
- Pivot Tabloyu Silme
- Bir Çalışma Kitabındaki tüm Özet Tabloları Biçimlendirin
- Pivot Tablonun Alanlarını Kaldırma
- Filtre Oluşturma
- Pivot Tablonuzu Yenileme
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 |