dictionary nesnesi hakkında

şehiriçi

Altın Üye
Katılım
1 Ağustos 2013
Mesajlar
563
Excel Vers. ve Dili
Ofis 2016 TR 32 Bit
Altın Üyelik Bitiş Tarihi
12-03-2025
Merhaba Arkadaşlar , ekteki dosyamda scripting.dictionary nesnesi ile satko sayfasının E sütunundaki verileri yine satko sayfasının M 7 sütunundan başlayarak Benzersiz bir şekilde aktarmak istiyorum.
Özellikle scripting dictionary nesnesine benzersiz verileri aktarmıyor yazdığım kod , view menüsündeki locals window dan bakıyorum benzersiz aktarmıyor daha doğrusu veri bile almıyor nedeni ni çözemedim desteğinizi bekliyorum ,Teşekkürler .
Not : Sorumun Çözümünü Scripting.Dictionary nesnesi ile çözmek istiyorum.
 

Ekli dosyalar

Necdet

Moderatör
Yönetici
Katılım
4 Haziran 2005
Mesajlar
15,372
Excel Vers. ve Dili
Ofis 365 Türkçe
Merhaba,
İnceleyiniz.

Ben referansları eklemeyi yeğliyorum. Kodların doğru çalışması için Değerleri ya Büyük Harfe ya da Küçük harfe çevirerek kodu düzenlemek gere.
O işi size bıraktım.

Kod:
Public Sub dicOrnek()

'Referanslardan Microsoft Scripting Runtime Seçili Olmalı

Dim i   As Long, _
    deg As Variant, _
    lst As Variant, _
    dic As New Dictionary, _
    adt As Long

For i = 7 To Cells(Rows.Count, "E").End(3).Row
    If Not Cells(i, "E") = "" Then
        deg = Cells(i, "E")
        If Not dic.Exists(deg) Then
            adt = adt + 1
            dic.Add deg, adt
        End If
    End If
Next i

lst = dic.Keys
Range("M7").Resize(adt, 1) = Application.WorksheetFunction.Transpose(lst)

End Sub
 
Son düzenleme:

şehiriçi

Altın Üye
Katılım
1 Ağustos 2013
Mesajlar
563
Excel Vers. ve Dili
Ofis 2016 TR 32 Bit
Altın Üyelik Bitiş Tarihi
12-03-2025
Necdet Bey öncelikle cevap verip emek harcadığınız için minnetarım ,galiba kafama takılanı çözdüm .Neydi o kafama takılan derseniz;
sizin cevaptan örnekliyeyim,

If Not Cells(i, "E") = "" Then
deg = Cells(i, "E")
If Not dic.Exists(deg) Then
adt = adt + 1
dic.Add deg, adt
End If
End If

yerine

If Not Cells(i, "E") = "" Then

If Not dic.Exists(Cells(i, "E")) Then
adt = adt + 1
dic.Add Cells(i, "E"), adt
End If
End If

gördüğünüz gibi değişken kullanmayınca hata veriyor Neden bunu anlamış değilim buna cevap verir misiniz. rica etsem ?
 
Son düzenleme:

Necdet

Moderatör
Yönetici
Katılım
4 Haziran 2005
Mesajlar
15,372
Excel Vers. ve Dili
Ofis 365 Türkçe
dictionary nesnesi variant veri istiyor, ondan olabilir.
 

şehiriçi

Altın Üye
Katılım
1 Ağustos 2013
Mesajlar
563
Excel Vers. ve Dili
Ofis 2016 TR 32 Bit
Altın Üyelik Bitiş Tarihi
12-03-2025
Sn veyselemre --stk.Cells(i, 5).Value---yani value ilave edince düzeldi . Çok kıymetli bir cevap oldu benim için çok teşekkürler ,değilse dictionary nesnesi ile ilgili çözümlerde variant tipinde değişken tanımlayıp ona göre devam edecektim . Şimdi 2 türlü alternatifide yapabilirim . çok teşekkürler
 
Üst