• DİKKAT

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

ilk 10 toplam değeri gösterme

Katılım
31 Temmuz 2017
Mesajlar
63
Excel Vers. ve Dili
office 2013
Merhaba,

A sütununda tarih mevcut
B sütununda cari isimleri mevcut; (aynı cari ismi farklı tarihlerde tekrar edebiliyor) (A1 'de XYZ firması varken A3 'te de XYZ cari ismi olabilir)
c sütununda ise bu satırlara ait tutarlar var.

toplam 500.000 satır mevcut
veri server 'dan geliyor olup sürekli yenileniyor.

soru:
belirtilecek olan tarih aralığına göre
D1 hücresi başlangıc tarihi
D2 hücresi bitiş tarihi

B sütununda ki carileri, belirtilen tarih aralığında, toplam tutara göre ilk 10 cariyi, aynı sheet üzerinde, E1 'den E10 'a kadar bulunan hücrelerde göstermek istiyorum.
 
Pivot Table ile kendinizde kolaylıkla yapabilirsiniz.

Denediniz mi?
 
Deneyiniz.

Kod:
Option Explicit

Sub Pivot_Table_Top_3()
    Dim S1 As Worksheet, S2 As Worksheet
    Dim Pivot_Cache As PivotCache, Pivot_Table As PivotTable
    Dim Adres As String, Veri As String, Son As Long, Zaman As Double

    With Application
        .ScreenUpdating = False
        .EnableEvents = False
        .Calculation = xlCalculationManual
        .DisplayAlerts = False
    End With
    
    Zaman = Timer

    Set S1 = Sheets("Sheet1")
    
    S1.Range("E4:E6").ClearContents
    
    Son = S1.Cells(S1.Rows.Count, 1).End(3).Row
    Veri = S1.Name & "!" & S1.Range("A3:C" & Son).Address(ReferenceStyle:=xlR1C1)
    
    Set S2 = Sheets.Add
    Adres = S2.Name & "!" & S2.Range("A1").Address(ReferenceStyle:=xlR1C1)
    
    Set Pivot_Cache = ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:=Veri)
    
    Set Pivot_Table = Pivot_Cache.CreatePivotTable(TableDestination:=Adres, TableName:="PivotTable1")
    
    With S2.PivotTables("PivotTable1").PivotFields("Açıklama")
        .Orientation = xlRowField
        .Position = 1
    End With
    
    S2.PivotTables("PivotTable1").AddDataField ActiveSheet.PivotTables("PivotTable1").PivotFields("Tutar"), "Toplam Tutar", xlSum
    
    ActiveWorkbook.SlicerCaches.Add2(S2.PivotTables("PivotTable1"), "Tarih", , xlTimeline).Slicers.Add ActiveSheet, , "Tarih", "Tarih", 100, 50, 300, 100
    
    ActiveWorkbook.SlicerCaches("YerelZamanÇizelgesi_Tarih").Slicers("Tarih").TimelineViewState.Level = xlTimelineLevelDays
    ActiveWorkbook.SlicerCaches("YerelZamanÇizelgesi_Tarih").TimelineState.SetFilterDateRange CStr(S1.Range("D1")), CStr(S1.Range("D2"))
    
    S2.PivotTables("PivotTable1").PivotFields("Açıklama").AutoSort xlDescending, "Toplam Tutar"
    S2.PivotTables("PivotTable1").PivotFields("Açıklama").PivotFilters.Add2 Type:=xlTopCount, DataField:=S2.PivotTables("PivotTable1").PivotFields("Toplam Tutar"), Value1:=3
    S2.PivotTables("PivotTable1").ColumnGrand = False
    
    Son = S2.Cells(S2.Rows.Count, 1).End(3).Row
    S2.Range("A2:A" & Son).Copy
    S1.Range("E4").PasteSpecial xlPasteValues
    Application.CutCopyMode = False
    S2.Delete
    Range("A1").Select
    
    With Application
        .ScreenUpdating = False
        .EnableEvents = False
        .Calculation = xlCalculationManual
        .DisplayAlerts = True
    End With
    
    MsgBox "İşlem süresi ; " & Format(Timer - Zaman, "0.00") & " Saniye"
End Sub
 
Geri
Üst