Soru Dizi Oluşturma Sorunu

Katılım
9 Ekim 2019
Mesajlar
109
Excel Vers. ve Dili
Standart 2016
Arkadaşlar merhaba,

Dizi yöntemiyle aşağıdaki kodlarla 3 sütundan oluşan toplamda 300bin satırlık veride dizi oluşturmak istiyorum fakat çok uzun sürdüğü için sonuçlandıramıyorum. 1milyon satırlık veride 2 sütun ile 5 saniyede sonuç alabilirken 3 sütunda neden bu kadar uzun sürüyor olabilir? Nereleri değiştirerek kısaltabilirim yardımcı olabilir misiniz? Yapmak istediğim A sütunundaki değerlerin hem B hem de C sütunlarındaki verilerini toplayıp ayrı bir alana yazmak.

Kod:
Sub deneme()
    Application.ScreenUpdating = False
    Zaman = Timer
    Set S1 = Worksheets("SATISLAR")
    son = S1.Cells(Rows.Count, "a").End(3).Row
    liste = S1.Range("a2:c" & son).Value
    
    ReDim dizi1(1 To son, 1 To 1)
    
    Set s = CreateObject("Scripting.Dictionary")
    
    For i = 1 To UBound(liste, 1)
        Aranan = liste(i, 1)
        If Not s.exists(Aranan) Then
            Say = Say + 1
            s.Add Aranan, Say
            ReDim Preserve dizi1(1 To son, 1 To 3)
            dizi1(Say, 1) = liste(i, 1)
        End If
        dizi1(s.Item(Aranan), 2) = dizi1(s.Item(Aranan), 2) + liste(i, 2)
        dizi1(s.Item(Aranan), 3) = dizi1(s.Item(Aranan), 3) + liste(i, 3)
    Next i
    
    ComboBox1 = "KASIM"
    
    S1.Range("E1") = "MUSTERI"
    S1.Range("F1") = "YILLIK"
    S1.Range("G1") = ComboBox1
    S1.Range("H1") = "ARTIS"
    S1.Range("E2").Resize(s.Count, 3) = dizi1
Application.ScreenUpdating = True
MsgBox "Tamamlandı." & vbLf & vbLf & _
            "İşlem süresi ; " & Format(Timer - Zaman, "0.00") & " Saniye", vbInformation
End Sub
 

ÖmerFaruk

Destek Ekibi
Destek Ekibi
Katılım
22 Ekim 2017
Mesajlar
4,779
Excel Vers. ve Dili
Microsoft 365 Tr-64
Kodların başında değişkenleri tanımlayın
Dim i As Long, Say As Long

Aşağıdaki satırda gösterdiğim değişikliği yapın
ReDim dizi1(1 To son, 1 To 3)

Ve bu satırı silin.
ReDim Preserve dizi1(1 To son, 1 To 3)

Süre değişecek mi?
 
Katılım
9 Ekim 2019
Mesajlar
109
Excel Vers. ve Dili
Standart 2016
Merhaba @ÖmerFaruk sürede bi değişiklik olmadı. A sütunundaki değişken sayısı çok fazla olduğu için sanırım süre artıyor. Pivot ile yaptım şimdilik ama dizi ile yapmak için araştırmaya devam ediyorum :) teşekkürler.
 
Üst