tahsinanarat
Altın Üye
- Katılım
- 14 Mart 2005
- Mesajlar
- 2,181
- Excel Vers. ve Dili
- Ofis 2019 Türkçe
Kod:
Sub ArraytoDict()
Dim timer0 As Single
Dim kaynak As Worksheet
Dim hedef As Worksheet
Dim myArray() As Variant
Dim dict As Object
Dim i As Long
timer0 = Timer()
Application.ScreenUpdating = False
Set kaynak = ThisWorkbook.Worksheets("data")
Set hedef = ThisWorkbook.Worksheets("tc_sicil")
hedef.Range("B3:F" & Rows.Count).ClearContents
myArray = kaynak.Range("A2:F" & kaynak.Cells(kaynak.Rows.Count, "A").End(xlUp).Row).Value
Set dict = CreateObject("Scripting.Dictionary")
For i = 1 To UBound(myArray, 1)
dict(myArray(i, 1)) = myArray(i, 2)
Next
Dim cell As Range
hedef.Select
Range("A2:A" & hedef.Cells(hedef.Rows.Count, "A").End(xlUp).Row).Select
For Each cell In Selection
cell.Offset(0, 1) = dict(cell.Value)
Next cell
Set dict = Nothing
Range("B2").Select
Application.ScreenUpdating = True
MsgBox "İşleminiz " & Timer - timer0 & " saniyede tamamlanmıştır."
End Sub
Bu kod ile 100000 Bin satırlarda bule 0,68 sn. gibi çok kısa bir zamanda data sayfasından arama yaptığım tc_sicil sayfasındaki A sutununda aradığım TC karşılıklarının data sayfasındaki B sutununda bulunan sicil karşılıklarını alabiliyorum.
Benim istediğim C,D,E,F vs. sutunlarınıda almak istersem kodda nasıl bir revize yapmalıyım, çok denemeler yaptım ancak başarılı olamadım. Yardımcı olabilecek hocalarıma şimdiden teşekkür ederim.
Saygılar
