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.
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