DOSYA İndirmek/Yüklemek için ÜCRETLİ ALTIN ÜYELİK Gereklidir!
Altın Üyelik Hakkında Bilgi
Ellerine emeğine sağlık rabbim senden ebeden razı olsun. Hayırlı günler.Makro uygulanan dosyanız eklidir.
Option Explicit
Sub Fast_Vlookup()
Dim Zaman As Double, Dizi As Variant, X As Long, Veri_A As Integer, Veri_B As Integer
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
Zaman = Timer
Sheets("Liste").Range("C2:C" & Rows.Count).ClearContents
Dizi = Sheets("Veri").Range("A1").CurrentRegion.Resize(, 4).Value
With CreateObject("Scripting.Dictionary")
For X = 2 To UBound(Dizi, 1)
.Item(Dizi(X, 1)) = Dizi(X, 2) & "#" & Dizi(X, 3) & "#" & Dizi(X, 4)
Next
Dizi = Sheets("Liste").Range("A1").CurrentRegion.Resize(, 3).Value
For X = 2 To UBound(Dizi, 1)
If .Exists(Dizi(X, 1)) Then
Veri_A = Split(.Item(Dizi(X, 1)), "#")(0)
Veri_B = Split(.Item(Dizi(X, 1)), "#")(1)
If Dizi(X, 2) >= Veri_A And Dizi(X, 2) <= Veri_B Then
Dizi(X, 3) = Split(.Item(Dizi(X, 1)), "#")(2)
Else
Dizi(X, 3) = "Yok"
End If
Else
Dizi(X, 3) = "Yok"
End If
Next
End With
Sheets("Liste").Range("A2:A" & Rows.Count).NumberFormat = "@"
Sheets("Liste").Range("A1").CurrentRegion.Resize(, 3) = Dizi
Application.ScreenUpdating = True
MsgBox "İşleminiz tamamlanmıştır." & Chr(10) & _
"İşlem süresi ; " & Format((Timer - Zaman), "0.00")
End Sub
Deneyiniz.
C++:Option Explicit Sub Fast_Vlookup() Dim Zaman As Double, Dizi As Variant, X As Long, Veri_A As Integer, Veri_B As Integer Application.ScreenUpdating = False Application.Calculation = xlCalculationManual Zaman = Timer Sheets("Liste").Range("C2:C" & Rows.Count).ClearContents Dizi = Sheets("Veri").Range("A1").CurrentRegion.Resize(, 4).Value With CreateObject("Scripting.Dictionary") For X = 2 To UBound(Dizi, 1) .Item(Dizi(X, 1)) = Dizi(X, 2) & "#" & Dizi(X, 3) & "#" & Dizi(X, 4) Next Dizi = Sheets("Liste").Range("A1").CurrentRegion.Resize(, 3).Value For X = 2 To UBound(Dizi, 1) If .Exists(Dizi(X, 1)) Then Veri_A = Split(.Item(Dizi(X, 1)), "#")(0) Veri_B = Split(.Item(Dizi(X, 1)), "#")(1) If Dizi(X, 2) >= Veri_A And Dizi(X, 2) <= Veri_B Then Dizi(X, 3) = Split(.Item(Dizi(X, 1)), "#")(2) Else Dizi(X, 3) = "Yok" End If Else Dizi(X, 3) = "Yok" End If Next End With Sheets("Liste").Range("A2:A" & Rows.Count).NumberFormat = "@" Sheets("Liste").Range("A1").CurrentRegion.Resize(, 3) = Dizi Application.ScreenUpdating = True MsgBox "İşleminiz tamamlanmıştır." & Chr(10) & _ "İşlem süresi ; " & Format((Timer - Zaman), "0.00") End Sub

Korhan bey yazmış olduğunuz kod çok güzel olmuş ve mükemmel hızlı çalışıyor.Ben ilk mesajınızdaki dosyaya göre kod önermiştim. Son dosyanızda durum farklı görünüyor. Müsait olduğumda dönüş yaparım.
Evet UNVAN kısmı boş olacak değerlere göre olabilirse memnun olurum.Eklediğiniz dosyada UNVAN kısmı boş görünüyor. Bu şekilde mi kullanacaksınız.
Çünkü benim önerdiğim kodlama bu sütunu dikkate alarak işlem yapıyordu.
Option Explicit
Sub Fast_Vlookup()
Dim S1 As Worksheet, S2 As Worksheet, X As Long
Dim Zaman As Double, Dizi As Variant, Y As Integer
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
Zaman = Timer
Set S1 = Sheets("Veri")
Set S2 = Sheets("Liste")
S2.Range("C2:C" & S2.Rows.Count).ClearContents
Dizi = S1.Range("A1:D" & WorksheetFunction.Max(S1.Range("B:C"))).Value
With CreateObject("Scripting.Dictionary")
For X = 2 To UBound(Dizi, 1)
For Y = Dizi(X, 2) To Dizi(X, 3)
.Item(Y) = Dizi(X, 4)
Next
Next
Dizi = S2.Range("A1").CurrentRegion.Resize(, 3).Value
For X = 2 To UBound(Dizi, 1)
If .Exists(Dizi(X, 2)) Then
Dizi(X, 3) = .Item(Dizi(X, 2))
Else
Dizi(X, 3) = "Yok"
End If
Next
End With
S2.Range("A2:A" & S2.Rows.Count).NumberFormat = "@"
S2.Range("A1").CurrentRegion.Resize(, 3) = Dizi
Set S1 = Nothing
Set S2 = Nothing
Application.ScreenUpdating = True
MsgBox "İşleminiz tamamlanmıştır." & Chr(10) & _
"İşlem süresi ; " & Format((Timer - Zaman), "0.00")
End Sub