Merhaba,
Dosyamda satır sayısı 400.000 üzerinde olduğundan düşeyara, indis, kaçıncı ile yaptığım formüller dosyada herhangi bir değişiklik olduğunda çok yavaş çalışıyor.
Youtube'da karşılaştığım videodan Dictionary metodunu gördüm, dosyama inanılmaz hız kattı.
Tek sorunum bir key'e ait çoklu değer varsa sadece 1 tanesini yazdırabiliyorum.
Kodu inceleyip yardımcı olabilir misiniz ?
İstediğim durum yatay olarak tüm değerlerin yazılması - 2. resimde "Sipariş - Manuel Yapılan"
Mevcut kodu çalıştırdığımda 3. resimdeki gibi liste oluşuyor
Dosyamda satır sayısı 400.000 üzerinde olduğundan düşeyara, indis, kaçıncı ile yaptığım formüller dosyada herhangi bir değişiklik olduğunda çok yavaş çalışıyor.
Youtube'da karşılaştığım videodan Dictionary metodunu gördüm, dosyama inanılmaz hız kattı.
Tek sorunum bir key'e ait çoklu değer varsa sadece 1 tanesini yazdırabiliyorum.
Kodu inceleyip yardımcı olabilir misiniz ?
İstediğim durum yatay olarak tüm değerlerin yazılması - 2. resimde "Sipariş - Manuel Yapılan"
Mevcut kodu çalıştırdığımda 3. resimdeki gibi liste oluşuyor
Kod:
Sub DictionaryVLookup()
'Youtube video :https://www.youtube.com/watch?v=c7RNF4GIpAk
Dim x, x2, y, y2()
Dim dict2 As Object
Dim ws As Worksheet
Set ws1 = ThisWorkbook.Sheets("Liste")
Set ws2 = ThisWorkbook.Sheets("Siparis")
Set dict2 = CreateObject("Scripting.Dictionary")
lr = ws1.Cells(Rows.Count, "A").End(xlUp).Row
x = ws1.Range("A2:A" & lr).Value
x2 = ws1.Range("B2:B" & lr).Value
For i = 1 To UBound(x, 1)
dict2.Item(x(i, 1)) = x2(i, 1)
Next i
lr2 = ws2.Cells(Rows.Count, "A").End(xlUp).Row
y = ws2.Range("A2:A" & lr2).Value
ReDim y2(1 To UBound(y, 1), 1 To 1)
For i = 1 To UBound(y, 1)
If dict2.exists(y(i, 1)) Then
y2(i, 1) = dict2(y(i, 1))
Else
y2(i, 1) = "Bulunamadi"
End If
Next i
ws2.Range("D2:D" & lr2).Value = y2
'Secim iptal edildi.
'ws2.Range("D2:D" & lr2).Select
Set dict = Nothing
End Sub
