ilk 10 toplam değeri gösterme

Katılım
31 Temmuz 2017
Mesajlar
63
Excel Vers. ve Dili
office 2013
Altın Üyelik Bitiş Tarihi
23-07-2021
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.
 
Katılım
31 Temmuz 2017
Mesajlar
63
Excel Vers. ve Dili
office 2013
Altın Üyelik Bitiş Tarihi
23-07-2021
https://we.tl/t-0G0ClJ10sq

örnek excel dosyasını ekledim
sarı ile işaretli hücrelere
belirtilen tarih aralığındaki ilk 3 firmanın gelmesini nasıl yapabiliriz?
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,256
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Pivot Table ile kendinizde kolaylıkla yapabilirsiniz.

Denediniz mi?
 
Katılım
31 Temmuz 2017
Mesajlar
63
Excel Vers. ve Dili
office 2013
Altın Üyelik Bitiş Tarihi
23-07-2021
Pivot Table ile kendinizde kolaylıkla yapabilirsiniz.

Denediniz mi?
Evet o şekilde kolaylıkla olabilyor fakat
Büyük bir dashboard hazırlıyorum da bir köşede bu tablonunda gözükmesi gerekiyor. O yüzden böyle bir şey istemiştim.
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,256
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
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
 
Üst