DOSYA İndirmek/Yüklemek için ÜCRETLİ ALTIN ÜYELİK Gereklidir!
Altın Üyelik Hakkında Bilgi
Sy. Korhan Hocam,Erdem Bey,
Özelden paylaştığınız dosyaya kodu uyarladım. Dosya Ektedir.
For X = 2 To UBound(My_Data, 1)
TCNO.Item(My_Data(X, 1)) = TCNO.Item(My_Data(X, 1)) + My_Data(X, 2)
For X = 2 To UBound(My_Data, 1)
TCNO.Item(My_Data(X, 1)) = TCNO.Item(My_Data(X, 4)) + My_Data(X, 3)
For X = 2 To UBound(My_Data, 1)
Sum_List(X - 1, 1) = TCNO.Item(My_Data(X, 1))
For X = 2 To UBound(My_Data, 1)
Sum_List(X - 1, 1) = TCNO.Item(My_Data(X, 81))
S1.Range("B2").Resize(UBound(My_Data, 1), 1) = Sum_List
S1.Range("CC2").Resize(UBound(My_Data, 1), 1) = Sum_List
Option Explicit
Sub FAST_SUMIF()
Dim S1 As Worksheet, S2 As Worksheet
Dim TCNO As Object, X As Long
Dim My_Data As Variant, Sum_List As Variant
Dim Count_Data As Long, Process_Time As Double
Process_Time = Timer
Application.ScreenUpdating = False
Set S1 = Sheets("Sayfa1")
Set S2 = Sheets("Sayfa2")
Set TCNO = VBA.CreateObject("Scripting.Dictionary")
S1.Range("B2:B" & S1.Rows.Count).ClearContents
My_Data = S2.Range("A1").CurrentRegion.Value
' ReDim Sum_List(1 To UBound(My_Data, 1), 1 To 1)
For X = 2 To UBound(My_Data, 1)
TCNO.Item(My_Data(X, 4)) = TCNO.Item(My_Data(X, 4)) + My_Data(X, 3)
Next
My_Data = S1.Range("CB1:CB20")
ReDim Sum_List(1 To UBound(My_Data, 1), 1 To 1)
For X = 2 To UBound(My_Data, 1)
Sum_List(X - 1, 1) = TCNO.Item(My_Data(X, 1))
Next
S1.Range("CD2").Resize(UBound(My_Data, 1), 1) = Sum_List
S1.Columns("B").AutoFit
Set S1 = Nothing
Set S2 = Nothing
Set TCNO = Nothing
Application.ScreenUpdating = True
MsgBox "İşleminiz tamamlanmıştır." & vbCrLf & vbCrLf & _
"İşlem süresi ; " & Format(Timer - Process_Time, "0.00") & " Saniye", vbInformation
End Sub
Erdem Bey Merhaba,Sayfa1'de A sütunundaki veriler Sayfa2'de karşılığı yok. Sayfa1'deki CB sütununu kodda kullanmalısınız.
CB sütununu kullanacaksanız dizideki elemanların dördüncüsü almalısınız. Kodu aşağıdaki gibi kullanabilirsiniz.
My_Data = S1.Range("CB1:CB20")
Sayın Hocam oldu, çok teşekkür ederim.Deneyiniz.
My_Data = S1.Range("CB1:CB" & S1.Cells(S1.Rows.Count, "CB").End(3).Row)