Aralarında benzerlik olanları bulma

Merhum İdris SERDAR

Moderatör
Yönetici
Katılım
21 Ekim 2005
Mesajlar
17,094
Excel Vers. ve Dili
Excel, 365 - İngilizce
Merhaba arkadaşlar,

Kaç gündür uğraştığım ve henüz çözemediğim bir konu...

İki sütunumuz var. Bu sütunlarda adlar biribirlerine tam eşit olanlar var, ancak tam eşit olmayanlar da var. Dikkat edildiğinde belli ki bunlar ayni kişiler olduğu görülüyor. Benzerlikleri arasında herhangi bir standart kural yok. Adlar eksik yazılmış olabilir. Soyad ve ad yer değiştirmiş olabilir. Bitişik yazılmış olabilirler. Bazı yerleri kısaltılmış olabilir. Tam benzememe hariç her türlü varyasyon mümkün. Bu durumda aynı kişilere ait olduğu belirlenen bu kişileri başka sütunlarda yanyana getirip nasıl yazdırabiliriz. Minimum hata marjlı da kabul edilebilir. Veri sayısı 10000 satırın üzerinde makro ile nasıl bir çözüm bulunabilir?

Örnek dosya ekte.

Yardımlarınız için şimdiden teşekkürler.

Kuralları belirlemek serbest. Örneğin en az yanyana 3 harfin benzemesi, yada bu değişken olarak tercihe bağlı olarak 4,5,6 ... gibi seçenekli de olabilir.


.
 

Ekli dosyalar

Merhum İdris SERDAR

Moderatör
Yönetici
Katılım
21 Ekim 2005
Mesajlar
17,094
Excel Vers. ve Dili
Excel, 365 - İngilizce
Ek açıklama:

Şimdi problemi açarsak belki çözüm için daha kolay yollar bulunabilir.

1 .Elimde bir liste var. Bu 300 500 satırlık kısa bir liste. İsterseniz Buna kara liste diyelim.
2. Elimizde birbaşka liste var bu da 10000 satırın üzerinde.
3. T.C. Kimlik No veya başka bir kod olsa işler kolay. Bu Yok.
4. Ad ve Soyadlar her iki listede farklı şekillerde yazılmış olabilir. Ancak standart bir kriter yok. Çok değişik şekillerde yazılmış olabilmektedir.
5. Esasen bu 10000 satırlık listede benzemeyen çoğunlukta. Benzer olabileceklerin maksimum sayısı 300-500 ama yanılmıyorsam bu sayı 30-50 kadar olabilir.
6. Özetle bu 10000 satırlık listede adları kara listede olanlar var mı? yok mu? Varsa kimlerle eşleşmesi mümkün. Aradığım bu.

Tekrar teşekkürler.

.
 

Necdet

Moderatör
Yönetici
Katılım
4 Haziran 2005
Mesajlar
15,489
Excel Vers. ve Dili
Ofis 365 Türkçe
Marhaba Sayın Yurttaş,

Gerçekten zor bir soru. Küçük çapta yardımcı olmak amacıyla bir çalışma yaptım. Genelde soyadının yazılacağını düşünerek ve soyadından 2 karakter eksik olarak bulduğum sözcüğü aratmaya çalıştım.

Tam çözüm olamaz ama küçük te olsa katkım olsun istedim.
Kod:
Sub KarsilastirmayaCalis()
Dim i As Long
Dim Soyad As String
Dim Alan As Range
Set Alan = Range("A2:A" & [A65536].End(3).Row)
Application.ScreenUpdating = False
Range("C2:C65000").ClearContents
For i = 2 To [B65536].End(3).Row
    a = Split(Cells(i, "B"), " ")
    Soyad = a(UBound(a))
    If Len(Soyad) > 3 Then Soyad = Left(Soyad, Len(Soyad) - 2)
    With Alan
        Set c = .Find(Soyad, LookIn:=xlValues, LookAt:=xlPart)
        If Not c Is Nothing Then
            Adres = c.Address
            Do
                If Len(Cells(i, "C")) = 0 Then
                    Cells(i, "C") = c.Row
                Else
                    Cells(i, "C") = Cells(i, "C") & ", " & c.Row
                End If
                Set c = .FindNext(c)
            Loop While Not c Is Nothing And c.Address <> Adres
        End If
    End With
Next i
Application.ScreenUpdating = True
End Sub
 

Ekli dosyalar

Merhum İdris SERDAR

Moderatör
Yönetici
Katılım
21 Ekim 2005
Mesajlar
17,094
Excel Vers. ve Dili
Excel, 365 - İngilizce
Necdet bey ilginiz için teşekkür ederim.

Henüz bir çözüme ulaşamadım.

.
 
Katılım
2 Mart 2005
Mesajlar
2,960
Excel Vers. ve Dili
ev: Ofis 2007- Win Xp
iş: Ofis 2010- Win Vista
sn yurttaş nasıl kodlanacağını bilmiyorum ama kalıma şöyle bir fikir geldi.
Önce bir ktf tanımlayıp harflerin toplamını alalaım.
örn:
A1 = HSAYAR : metintopla("A1") = 10 + 22+1+28+1+21 = 83
B1 = SAYARH : metintopla("A1") = 22+1+28+1+21 + 10 = 83

trim(a1) ve trim(b1) in uzunluğu eşitse yani 6 karakterli ise metintopla fonksiyonu trim yardımı ile a1 ve b1 in toplamları alınır. eğer oda eşitse benzer olduğu kabul edilir.

eğer fazla yada ekisk bir harf girildiği düşünülüyorsa;

a1 sütunundaki metin 6 karakterli ise a2 deki metin uzunluğu 5 >= ve 7<= kontrolü sağlanır uyuyorsa

metin topla fonkisyonu çağrılır +- 29 olarak kontrol edilir eğer uyuyorsa benzer kabul edilir.


nasıl yapılacağını bilmiyoprum. ama yapılabilir gibi geldi.
 
Üst