Özellik ikonu

PivotTableWizard

İndirme izni yok

Genel Bakış

PivotTableWizard (Worksheet.PivotTableWizard yöntemi), bir Worksheet nesnesi üzerinden yeni bir özet tablo (PivotTable) raporu oluşturur ve oluşan PivotTable nesnesini döndürür. Kaynak veri türünü, kaynak aralığı ve raporun yerleşeceği hücreyi parametre olarak alır. Eski makrolarda çok sık karşınıza çıkar. Yeni kodlarda genellikle PivotCaches.Create ve CreatePivotTable tercih edilir.

Söz dizimi​

Yöntem bir çalışma sayfası nesnesi üzerinde çağrılır ve bir PivotTable nesnesi döndürür. Tüm parametreler isteğe bağlıdır:
VBA
ifade.PivotTableWizard(SourceType, SourceData, TableDestination, TableName, RowGrand, ColumnGrand, SaveData, HasAutoFormat, AutoPage, Reserved, BackgroundQuery, OptimizeCache, PageFieldOrder, PageFieldWrapCount, ReadData, Connection)
Parametreler:
  • SourceType: Verinin türü; isteğe bağlı. xlDatabase (sayfadaki liste ya da veritabanı), xlExternal (başka bir uygulamadaki dış veri), xlConsolidation (birden çok aralığın birleştirilmesi) ve xlPivotTable (başka bir özet tablo) değerlerinden biri olur.
  • SourceData: Raporun kaynağı; isteğe bağlı. Genellikle başlık satırını da içeren bir Range nesnesidir. Birleştirmede aralık dizisi, başka bir özet tabloda o tablonun adı verilir.
  • TableDestination: Raporun yerleşeceği sayfa aralığının sol üst hücresi; isteğe bağlı. Verilmezse etkin hücre kullanılır.
  • TableName: Yeni özet tablonun adı; isteğe bağlı. Verilmezse Excel otomatik ad üretir.
  • RowGrand: True ise satırlar için genel toplam gösterilir; isteğe bağlı.
  • ColumnGrand: True ise sütunlar için genel toplam gösterilir; isteğe bağlı.
  • SaveData: True ise veri, rapor ile birlikte çalışma kitabına kaydedilir; isteğe bağlı.
  • HasAutoFormat: True ise rapor yenilendiğinde ya da alanlar taşındığında Excel otomatik biçim uygular; isteğe bağlı.
  • AutoPage: Yalnızca birleştirme (xlConsolidation) raporlarında geçerlidir; Excel'in sayfa alanı oluşturup oluşturmayacağını belirler; isteğe bağlı.
  • Reserved: Kullanılmaz; boş bırakın.
  • BackgroundQuery: True ise sorgu arka planda eşzamansız çalışır; isteğe bağlı.
  • OptimizeCache: True ise önbellek oluşturulurken en iyileştirilir; isteğe bağlı.
  • PageFieldOrder: Sayfa alanlarının dizilişi; xlDownThenOver (varsayılan) ya da xlOverThenDown.
  • PageFieldWrapCount: Rapordaki her sütun ya da satırdaki sayfa alanı sayısı; isteğe bağlı.
  • ReadData: True ise dış veritabanındaki verinin kopyasıyla rapor oluşturulur; isteğe bağlı.
  • Connection: Dış veri kaynağına bağlantı bilgisini içeren metin; isteğe bağlı.

Dönüş değeri ve kaynak türü sabitleri​

Yöntem, oluşturulan raporu temsil eden bir PivotTable nesnesi döndürür. Dönüş değerini bir değişkene atamak için Set deyimini kullanın ve parametreleri parantez içinde verin. Dönen nesne ile alanları yerleştirebilir, veri alanlarının işlevini değiştirebilir ve raporu yenileyebilirsiniz.
Kaynak türü için kullanılan sabitler:
  • xlDatabase: Excel çalışma sayfasındaki başlıklı bir liste ya da veritabanı aralığı.
  • xlExternal: Başka bir uygulamadan alınan dış veri.
  • xlConsolidation: Birden çok çalışma sayfası aralığının birleştirilmesi.
  • xlPivotTable: Aynı kitaptaki başka bir özet tablo raporu.
Raporun alanları PivotField nesnesinin Orientation özelliğiyle (xlRowField, xlColumnField, xlPageField, xlDataField) ya da AddFields yöntemiyle yerleştirilir.

Ne zaman kullanılır, nelere dikkat edilir​

Yöntem, Özet Tablo Sihirbazı'nın makro karşılığıdır ve Excel'in eski sürümlerinden kalan kodlarla uyumluluk için hala çalışır. Yeni bir proje yazıyorsanız önce PivotCaches.Create ile önbellek oluşturup ardından CreatePivotTable yöntemini kullanmak daha esnektir ve Microsoft'un önerdiği yoldur.
Yöntem OLE DB veri kaynaklarında kullanılamaz. Kaynak aralığın ilk satırı mutlaka başlık olmalıdır; başlık hücreleri boş ya da yinelenen olursa rapor oluşmayabilir. Rapor, hedefte başka bir özet tabloyla çakışmamalıdır.

1. Satış listesinden temel özet tablo​

Ürün, şehir ve satış tutarı içeren listeden ürünleri satırlara, şehirleri sütunlara yerleştiren bir özet tablo oluşturulur. Kodu bir standart modüle yapıştırın. Makro, raporun kapladığı adresi D2 hücresine yazar.
VBA 24 satır
Option Explicit

' Ham listeden özet tablo oluşturur
Sub OzetTabloOlustur()
    Dim ws As Worksheet
    Dim pt As PivotTable

    Set ws = ActiveSheet

    ' Kaynak A1:C9, rapor F1 hücresinden başlar
    Set pt = ws.PivotTableWizard( _
        SourceType:=xlDatabase, _
        SourceData:=ws.Range("A1:C9"), _
        TableDestination:=ws.Range("F1"), _
        TableName:="SatisOzet")

    ' Alan adlarını başlık hücrelerinden alıyoruz
    pt.PivotFields(ws.Range("A1").Value).Orientation = xlRowField
    pt.PivotFields(ws.Range("B1").Value).Orientation = xlColumnField
    pt.PivotFields(ws.Range("C1").Value).Orientation = xlDataField

    ' Raporun kapladığı adresi yaz
    ws.Range("D2").Value = pt.TableRange1.Address
End Sub
PivotTableWizard
Formülünü incelemek için bir hücre seçin.
ABCDEFGHIJ
1ÜrünŞehirSatışSonuçToplam SatışŞehir
2Laptopİstanbul12.500,00$F$1:$J$6ÜrünAnkaraİstanbulİzmirGenel Toplam
3TelefonAnkara8.200,00Laptop11800125001210036400
4LaptopAnkara11.800,00Tablet470043009000
5Tabletİzmir4.300,00Telefon82009100790025200
6Telefonİstanbul9.100,00Genel Toplam20000263002430070600
7Tabletİstanbul4.700,00
8Laptopİzmir12.100,00
9Telefonİzmir7.900,00
Satış VerisiExcelDepo v1.0.0
Makro, F1 hücresinden başlayan SatisOzet adlı özet tabloyu oluşturur. Ürünler satırlarda, şehirler sütunlarda yer alır; hücrelerde satış toplamları görünür. D2 hücresine yazılan $F$1:$J$6 adresi raporun kapladığı alanı gösterir. Alan adlarını metin olarak yazmak yerine başlık hücrelerinden okumak, başlık değişse bile kodun çalışmasını sağlar.

2. Sayfa alanı ve genel toplam ayarı​

Personeller satırlara, bölüm bilgisi ise sayfa alanına (filtre) yerleştirilir. Satırlar için genel toplam kapatılır, sütunlar için açık bırakılır. Kodu standart modüle yapıştırın; makro iki ayarın durumunu D2 ve D3 hücrelerine yazar.
VBA 29 satır
Option Explicit

' Sayfa alanlı özet tablo ve genel toplam ayarı
Sub BolumOzetiOlustur()
    Dim ws As Worksheet
    Dim pt As PivotTable

    Set ws = ActiveSheet

    ' Sayfa alanı için üstte boşluk kalsın diye F5 seçildi
    Set pt = ws.PivotTableWizard( _
        SourceType:=xlDatabase, _
        SourceData:=ws.Range("A1:C9"), _
        TableDestination:=ws.Range("F5"), _
        TableName:="BolumOzet", _
        RowGrand:=False, _
        ColumnGrand:=True)

    ' Personel satır alanı, Bölüm sayfa alanı
    pt.AddFields RowFields:=ws.Range("A1").Value, _
                 PageFields:=ws.Range("B1").Value

    ' Tutar veri alanı
    pt.PivotFields(ws.Range("C1").Value).Orientation = xlDataField

    ' Ayarların durumunu sayfaya yaz
    ws.Range("D2").Value = pt.RowGrand
    ws.Range("D3").Value = pt.ColumnGrand
End Sub
PivotTableWizard
Formülünü incelemek için bir hücre seçin.
ABCDEFG
1PersonelBölümTutarSonuç
2Ayşe YılmazSatış15.400,00YANLIŞ
3Mehmet DemirSatış13.200,00DOĞRUBölüm(All)
4Elif KayaDestek8.700,00
5Can ÖzkanDestek9.400,00Toplam Tutar
6Zeynep ArslanSatış14.100,00PersonelTotal
7Burak ŞahinLojistik7.600,00Ayşe Yılmaz15400
8Selin AydınLojistik8.100,00Burak Şahin7600
9Emre ÇelikDestek8.900,00Can Özkan9400
10Elif Kaya8700
11Emre Çelik8900
12Mehmet Demir13200
13Selin Aydın8100
14Zeynep Arslan14100
15Genel Toplam85400
Personel SatışExcelDepo v1.0.0
Rapor F5 hücresinden başlar; Bölüm alanı sayfa alanı olarak raporun üstünde görünür ve filtre işlevi görür. RowGrand değeri False verildiği için D2 hücresinde YANLIŞ, ColumnGrand True verildiği için D3 hücresinde DOĞRU yazar. Genel toplam satırının ya da sütununun hangi ayara bağlı olduğunu rapor görünümünde de kontrol edebilirsiniz.

3. Otomatik biçim, veri kaydı ve işlev değişimi​

Aylara göre adetlerin ortalamasını gösteren bir özet tablo oluşturulur. Otomatik biçim kapatılır, veri kaydı açık bırakılır ve veri alanının işlevi ortalamaya çevrilir. Kodu standart modüle yapıştırın; makro ayarları ve rapor adresini D2:D4 hücrelerine yazar.
VBA 29 satır
Option Explicit

' HasAutoFormat ve SaveData ayarlı, ortalama alan özet tablo
Sub OrtalamaOzetiOlustur()
    Dim ws As Worksheet
    Dim pt As PivotTable

    Set ws = ActiveSheet

    Set pt = ws.PivotTableWizard( _
        SourceType:=xlDatabase, _
        SourceData:=ws.Range("A1:C9"), _
        TableDestination:=ws.Range("F1"), _
        TableName:="AdetOzet", _
        SaveData:=True, _
        HasAutoFormat:=False)

    ' Ay satır alanı, Adet veri alanı
    pt.PivotFields(ws.Range("A1").Value).Orientation = xlRowField
    pt.PivotFields(ws.Range("C1").Value).Orientation = xlDataField

    ' Veri alanının işlevini toplamdan ortalamaya çevir
    pt.DataFields(1).Function = xlAverage

    ' Sonuçları sayfaya yaz
    ws.Range("D2").Value = pt.HasAutoFormat
    ws.Range("D3").Value = pt.SaveData
    ws.Range("D4").Value = pt.TableRange1.Address
End Sub
PivotTableWizard
Formülünü incelemek için bir hücre seçin.
ABCDEFG
1AyÜrünAdetSonuçOrtalama Adet
2OcakKalem120YANLIŞAyTotal
3OcakDefter80DOĞRUOcak100
4ŞubatKalem140$F$1:$G$7Şubat117,5
5ŞubatDefter95Mart135
6MartKalem160Nisan127,5
7MartDefter110Genel Toplam120
8NisanKalem150
9NisanDefter105
Aylık AdetlerExcelDepo v1.0.0
AdetOzet adlı rapor F1 hücresinden başlar ve her ay için adetlerin ortalamasını gösterir. D2 hücresinde otomatik biçim ayarının durumu (YANLIŞ), D3 hücresinde veri kaydı ayarının durumu (DOĞRU) yer alır. D4 hücresindeki $F$1:$G$7 adresi raporun kapladığı alanı gösterir. DataFields(1).Function özelliği, veri alanının özetleme işlevini xlAverage olarak değiştirir.

Kullanırken dikkat edin​

  • Kaynak aralığın başlıkları: Kaynak aralığın ilk satırı başlık satırı olmalı ve her başlık dolu ve benzersiz olmalıdır. Boş ya da yinelenen başlıklar hata verir veya alan adlarının karışmasına yol açar. Kaynak aralığı sabit yazmak yerine, veri büyüyecekse bir tablo (ListObject) ya da dinamik bir aralık kullanmak daha güvenlidir.
  • Hedef hücre ve çakışma: TableDestination belirtmezseniz rapor etkin hücreye yerleşir. Hedef alan başka bir özet tabloyla çakışırsa makro hata verir. Sayfa alanı kullanacaksanız hedef hücrenin üstünde yeterli boş satır bırakın.
  • Aynı adda rapor oluşturmayın: TableName ile verdiğiniz ad, aynı çalışma sayfasındaki başka bir özet tabloyla aynı olmamalıdır. Makroyu birden çok kez çalıştıracaksanız önce varsa eski raporu silin ya da farklı bir ad üretin.
  • Alan adlarını doğru yazın: PivotFields içinde alan adı yazarken adın başlık hücresiyle birebir aynı olması gerekir. Türkçe karakter ve boşluk hataları yaygındır. Alan adını başlık hücresinden okumak ya da sıra numarasıyla çağırmak bu hatayı önler.
  • Yeni kodlarda tercih edilecek yol: Yeni yazdığınız makrolarda PivotCaches.Create ile önbellek oluşturup CreatePivotTable yöntemini kullanmak, hem daha güncel hem de daha ayrıntılı denetim sağlar. PivotTableWizard yöntemini çoğunlukla eski kodları anlamak ve bakımını yapmak için bilmeniz yeterlidir.
  • Kaynak türü sınırları: Yöntem OLE DB veri kaynaklarında kullanılamaz. Dış veri kullanırken Connection, BackgroundQuery ve ReadData parametrelerinin sonuçlarını mutlaka deneyerek doğrulayın; makro dış bağlantıyı açarken kullanıcıdan izin ya da kimlik bilgisi isteyebilir.
  • İlgili konular:
    • PivotCaches.Create: Özet tablo önbelleği oluşturan güncel yöntem.
    • PivotCache.CreatePivotTable: Önbellekten özet tablo oluşturur.
    • PivotTable nesnesi: Rapor üzerinde işlem yapmak için kullanılır.
    • PivotFields ve AddFields: Alanları satır, sütun, sayfa ve veri alanı olarak yerleştirir.
    • RefreshTable: Özet tabloyu kaynak veriyle günceller.
    • Ekle > Özet Tablo (Insert > PivotTable): Aynı işlemin arayüzdeki karşılığı.
    • ÖZETVERİAL: Özet tablodan değer çeken çalışma sayfası işlevi.
Örneklerdeki makroların tamamı indirilebilir Excel dosyasındadır (.xlsm). Dosyayı açtıktan sonra makroları etkinleştirin, ardından Alt + F11 ile Visual Basic Düzenleyicisi'nde kodları inceleyebilir ve Alt + F8 ile çalıştırabilirsiniz.
Yazar
ExcelDepo
İndirme sayısı
0
Gösterim
15
İlk yayın
Güncel

Puanlar

0.00 Oylama 0 İnceleme
Geri
Üst