• DİKKAT

    DOSYA İndirmek/Yüklemek için ÜCRETLİ ALTIN ÜYELİK Gereklidir!
    Altın Üyelik Hakkında Bilgi

Ne kadar satır varsa tüm satırları alıp, pivot çeksin

Katılım
21 Mart 2013
Mesajlar
205
Excel Vers. ve Dili
Microsoft Excel Professional Plus 2016 - İngilizce
Merhabalar,

Sürekli yaptığım PİVOT tabloları makrolaştırmak istedim.

Makro kaydet diyerek, makro hazırlamaya çalışıyorum.

Sistemden raporu çekip excele yapıştırdığımda (satır sayısı 191 diyelim.) Verilerin bulunduğu sekmedeyken CTRL + A yapıyorum ve pivotumu istediğim şekilde hazırlayıp makroyu durduruyorum.

Daha sonra 192 satırla başka bir raporu yapıştırıp makroyu çalıştırdığımda PİVOTu sadece 191. satıra kadar olan verileri kullanarak oluşturuyor.

VBA'daki kodlarım şu şekilde:

Kod:
Sub pivot_cek()
'
' pivot_cek Makro
'

'
    Sheets("Veri").Select
    Range("A1").Select
    ActiveCell.Range("A1:G191").Select
    Application.CutCopyMode = False
    ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
        "Veri!R1C1:R191C7", Version:=6).CreatePivotTable TableDestination:= _
        "Pivot!R1C1", TableName:="PivotTable2", DefaultVersion:=6
    Sheets("Pivot").Select
    Cells(1, 1).Select
    With ActiveSheet.PivotTables("PivotTable2").PivotFields("MÜŞTERİ NO")
        .Orientation = xlRowField
        .Position = 1
    End With
    With ActiveSheet.PivotTables("PivotTable2").PivotFields("MÜŞTERİ UNVANI")
        .Orientation = xlRowField
        .Position = 2
    End With
    With ActiveSheet.PivotTables("PivotTable2").PivotFields("HESAP TURU")
        .Orientation = xlColumnField
        .Position = 1
    End With
    With ActiveSheet.PivotTables("PivotTable2").PivotFields("DVZ KOD")
        .Orientation = xlColumnField
        .Position = 2
    End With

...... bu şekilde gidiyor.


Satır sayısı ne kadarsa tüm satırların pivot'a aktarılabileceği kodu yazmam konusunda yardımcı olabilir misiniz?

veya

Bunu makro kaydet diyerek yaparsam nasıl yapmam gerekirdi ?

Çok teşekkürler.
 
ActiveCell.Range("A1:G191").Select
yazan yere
ActiveSheet.UsedRange.Select
yazmayı deneyin.
 
ActiveCell.Range("A1:G191").Select
yazan yere
ActiveSheet.UsedRange.Select
yazmayı deneyin.

Olmadı maalesef.

Satıların tümünü seçtiğini görüyorum fakat PİVOT'ta çıkmıyor.

Şöyle yazdım:

Kod:
Sub pivot_cek()
'
' pivot_cek Makro
'

'
    Sheets("Veri").Select
    ActiveSheet.UsedRange.Select
    Application.CutCopyMode = False
    ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
        "Veri!R1C1:R191C7", Version:=6).CreatePivotTable TableDestination:= _
        "Pivot!R1C1", TableName:="PivotTable1", DefaultVersion:=6
    Sheets("Pivot").Select
    Cells(1, 1).Select
    With ActiveSheet.PivotTables("PivotTable1").PivotFields("MÜŞTERİ NO")
        .Orientation = xlRowField
        .Position = 1
    End With
    With ActiveSheet.PivotTables("PivotTable1").PivotFields("MÜŞTERİ UNVANI")
        .Orientation = xlRowField
        .Position = 2
 
"Veri!R1C1:R191C7"
burayı düzeltmemiz gerekiyor.
kendim deneme yapıyorum ama henüz bulamadım.
 
Arkadaşlar çözümü hala beklemekteyim.

Bilginiz, fikriniz varsa paylaşmanızı beklerim.

Teşekkürler.
 
Arkadaşlar çözümü hala beklemekteyim.

Bilginiz, fikriniz varsa paylaşmanızı beklerim.

Teşekkürler.

pivot isimli yeni ve boş bir sayfa oluşturdum.
ve bu kod çalıştı.
umarım fikir verir.

Kod:
Sub Makro6()
'
' Makro6 Makro
'

'
Sheets("pivot").Select
    Cells.Select
    Selection.Delete
    Range("A1").Select
    Sheets("Veri").Select
    Range("A1").Select

    ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:=Worksheets("Veri").Range("A1").CurrentRegion, Version:=xlPivotTableVersion15) _
        .CreatePivotTable TableDestination:=Worksheets("pivot").Range("B2"), _
        TableName:="PivotTable5", DefaultVersion _
        :=xlPivotTableVersion15
        
        
        Sheets("pivot").Select
    Cells(2, 2).Select
    With ActiveSheet.PivotTables("PivotTable5").PivotFields("Faal. Ad")
        .Orientation = xlRowField
        .Position = 1
    End With
    With ActiveSheet.PivotTables("PivotTable5").PivotFields("Gönderilen")
        .Orientation = xlRowField
        .Position = 2
    End With
    With ActiveSheet.PivotTables("PivotTable5").PivotFields("Harcanan")
        .Orientation = xlRowField
        .Position = 3
    End With
    With ActiveSheet.PivotTables("PivotTable5").PivotFields("Harcanabilir")
        .Orientation = xlRowField
        .Position = 4
    End With
    ActiveSheet.PivotTables("PivotTable5").AddDataField ActiveSheet.PivotTables( _
        "PivotTable5").PivotFields("Gönderilen"), "Say Gönderilen", xlCount
    ActiveSheet.PivotTables("PivotTable5").AddDataField ActiveSheet.PivotTables( _
        "PivotTable5").PivotFields("Harcanan"), "Say Harcanan", xlCount
    ActiveSheet.PivotTables("PivotTable5").AddDataField ActiveSheet.PivotTables( _
        "PivotTable5").PivotFields("Harcanabilir"), "Say Harcanabilir", xlCount
    With ActiveSheet.PivotTables("PivotTable5").PivotFields("Say Gönderilen")
        .Caption = "Toplam Gönderilen"
        .Function = xlSum
    
    End With
    With ActiveSheet.PivotTables("PivotTable5").PivotFields("Say Harcanan")
        .Caption = "Toplam Harcanan"
        .Function = xlSum
      
    End With
    With ActiveSheet.PivotTables("PivotTable5").PivotFields("Say Harcanabilir")
        .Caption = "Toplam Harcanabilir"
        .Function = xlSum

    End With
    
End Sub
 
Son düzenleme:
pivot isimli yeni bir sayfa açıp
bu kodu giriş kısımına yapıştırsan olur gibi.

Kod:
ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:=Worksheets("Veri").Range("A1").CurrentRegion) _
        .CreatePivotTable TableDestination:=Worksheets("pivot").Range("B2"), _
        TableName:="PivotTable1", DefaultVersion:=xlPivotTableVersion10

Oldu fakat PİVOT'un arayüzü sadeleşti. Default görüntüsünde yapamaz mıyız?
 
Alternatif olarak hücre aralığını dinamik alan tanımlaması uygulayabilirsiniz. Özet tablonuzun veri kaynağı bölümünde de bu dinamik alan tanımlamasını kullanabilirsiniz.

Linki inceleyiniz.

Dinamik Alan
 
Geri
Üst