Arkadaşlar Merhaba,
İyi Bayramlar,
Bir sitede aşağıdaki gibi bir kod buldum. (Milyon satır veri de olsa, çok hızlı çalışan bir vlookup kodu).
Anlamaya çalıştım ancak biraz karışık geldi. Hani, bir data olur, başka yerde de karşılaştırılacak bir veri olur.
Burada karşılaştırma nerede yapılıyor, eşleşecek kayıt bulunduğunda istenilen sütunlar nerede belirtiliyor vs.
Nasıl kullanacağımı anlamak için soruyorum, rica etsem yanlarına nasıl çalıştığı ile ilgili açıklama yazabilir misiniz? yada bir örnek çalışma kitabı paylaşabilir misiniz. ?
İyi Bayramlar,
Bir sitede aşağıdaki gibi bir kod buldum. (Milyon satır veri de olsa, çok hızlı çalışan bir vlookup kodu).
Anlamaya çalıştım ancak biraz karışık geldi. Hani, bir data olur, başka yerde de karşılaştırılacak bir veri olur.
Burada karşılaştırma nerede yapılıyor, eşleşecek kayıt bulunduğunda istenilen sütunlar nerede belirtiliyor vs.
Nasıl kullanacağımı anlamak için soruyorum, rica etsem yanlarına nasıl çalıştığı ile ilgili açıklama yazabilir misiniz? yada bir örnek çalışma kitabı paylaşabilir misiniz. ?
CSS:
Dim S1 As Worksheet, s2 As Worksheet
Dim dic As Object, i As Long
Dim a(), b(), c()
t = TimeValue(Now)
Set S1 = Sheets("Data")
Set s2 = Sheets("LOOKUP")
Set dic = CreateObject("scripting.dictionary")
Set dic1 = CreateObject("scripting.dictionary")
a = S1.Range("A2:E" & S1.Cells(Rows.Count, 1).End(3).Row).Value
b = s2.Range("A2:A" & s2.Cells(Rows.Count, 1).End(3).Row).Value
For i = 1 To UBound(b)
dic(b(i, 1)) = b(i, 1)
Next i
ReDim c(1 To UBound(b), 1 To 4)
For i = 1 To UBound(a)
If dic.exists(a(i, 1)) Then
dic1(a(i, 1)) = i
End If
Next i
For i = 1 To UBound(b)
For j = 1 To 4
c(i, j) = a(dic1(b(i, 1)), j + 1)
Next j
Next i
s2.Range("K2:N" & s2.Cells(Rows.Count, "K").End(3).Row) = ""
s2.[K2].Resize(UBound(b), 4) = c
MsgBox CDate(TimeValue(Now) - t), vbInformation