farklı formatlarda aynı karakterleri içeren satırları arama

Katılım
8 Mart 2021
Mesajlar
3
Excel Vers. ve Dili
2019, Türkçe
merhaba arkadaşlar, sorum şu şekilde; excel dosyasında farklı satırlarda ve farklı formatlarda tekrarlanan değerleri tespit etmek istiyorum. örneğin; "yuvam market / ali yuva" ve başka bir satırda "yuvam market şube 2 / ali yuva" şeklinde veriler mevcut. Ben tek tek kontrol ederek arama kısmına "ali yuva" yazdığımda gelecek olan iki farklı satırı nasıl bir formül veya fonksiyon kullanmalıyım ki program kendisi tespit etsin, kısacası bahsettiğim formatta olduğu gibi farklı varyasyonlarla yazılmış olan satırları bana excel kendisi göstersin, umarım böyle bir şey mümkündür, elle aramak gerçekten çok yorucu oluyor. Cevaplarınız için şimdiden teşekkür ederim.
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,250
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
CTRL+F (BUL) menüsünü kullanabilirsiniz.

Menüyü çalıştırıp aradığınız değer yazıp TÜMÜNÜ BUL derseniz sayfada ya ada dosyada nerede varsa size listeler. Menüde SEÇENEKLER bölümünden arama parametlerinizi ayarlayabilirsiniz.
 
Katılım
8 Mart 2021
Mesajlar
3
Excel Vers. ve Dili
2019, Türkçe
CTRL+F (BUL) menüsünü kullanabilirsiniz.

Menüyü çalıştırıp aradığınız değer yazıp TÜMÜNÜ BUL derseniz sayfada ya ada dosyada nerede varsa size listeler. Menüde SEÇENEKLER bölümünden arama parametlerinizi ayarlayabilirsiniz.
selamlar ben değer yazmadan otomatik yapmak istiyorum.
yapmak istediğimi örnek dosya üzerinde açıkladım.
örnek dosya link
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,250
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Sanırım siz kelime bazlı eşleşmeleri görmek istiyorsunuz. Bunu şu haliyle yapabilmek için aklıma kelimeleri yan sütunlarda parçalara ayırarak kontrol etme mantığı geldi.

İşinize yararsa üzerinde uğraşabiliriz.
 
Katılım
8 Mart 2021
Mesajlar
3
Excel Vers. ve Dili
2019, Türkçe
Sanırım siz kelime bazlı eşleşmeleri görmek istiyorsunuz. Bunu şu haliyle yapabilmek için aklıma kelimeleri yan sütunlarda parçalara ayırarak kontrol etme mantığı geldi.

İşinize yararsa üzerinde uğraşabiliriz.
merhaba, bu benim de aklıma geldi ama %100 doğruluğu olur mu bilemedim.
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,250
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Ekli dosyada iki çözüm sundum.

1. Çözüm;
Yerleşik DİZİ fonksiyonlarla metin içinde geçen kelimelerin harflerinin sayısal değerleri toplanıyor. Burada / ve - gibi semboller dikkate alınmıyor. Kendi tablonuzda başka semboller varsa formüle onları da eklemek gerekecektir.

Bu çözümde şu sıkıntı var;

Örnek olarak D2 hücresinde yazan köşe market / ali köşe metni aşağıdaki gibi olursa harflerin sayısal değer toplamı aynı olacaktır. Bu sebeple bu veriler aynıymış gibi değerlendirecektir.

eşök martek / ila öşek

%100 doğru sonuç vermese de eğer böyle verileriniz yoksa kullanabilirsiniz.

2. Çözüm;
Burada ise makro ile bir kullanıcı tanımlı fonksiyon hazırladım. Bu fonksiyon tanımlı aralıktaki verileri arka planda kelimelere ayırıp tek tek kontrol ediyor. Eşleşen kayıtları sayarak sonuç veriyor. Bir nevi EĞERSAY gibi çalışıyor. Bence bu yöntem daha sağlıklı sonuçlar verecektir.

Çıkan sonuçlar üzerinde koşullu biçimlendirme uygulayarak renklendirme işlemini yaptım.

Sizde denemeler yapın. Eğer sorun çıkarsa düzeltme yaparız.

Kullandığım kullanıcı tanımlı fonksiyon kodları;

C++:
Option Explicit

Function K_EĞERSAY(Ölçüt_Aralığı As Range, Ölçüt As Variant)
    Dim Veri As Variant, Adresler As Object, Aranan_Kelimeler As Object
    Dim Bulunan_Kelimeler As Object, X As Long, Bul As Range, Adres As String
    Dim Kelime As Variant, Y As Long, Aranan_Kelime As Variant, Say As Long

    Application.Volatile True
    
    Veri = WorksheetFunction.Trim(Replace(Replace(Ölçüt, "-", ""), "/", ""))
    Veri = UCase(Replace(Replace(Veri, "ı", "I"), "i", "İ"))
    Veri = Split(Veri, " ")
        
    If UBound(Veri) = 0 Then
        K_EĞERSAY = WorksheetFunction.CountIf(Ölçüt_Aralığı, Ölçüt)
        GoTo Son
    End If
    
    Set Adresler = CreateObject("Scripting.Dictionary")
    Set Aranan_Kelimeler = CreateObject("System.Collections.ArrayList")
    Set Bulunan_Kelimeler = CreateObject("System.Collections.ArrayList")
    
    For X = LBound(Veri) To UBound(Veri)
        Aranan_Kelimeler.Add CStr(Veri(X))
    Next
    
    Aranan_Kelimeler.Sort
    
    Set Bul = Ölçüt_Aralığı.Find(What:=Veri(0), LookIn:=xlValues, LookAt:=xlPart)
    If Not Bul Is Nothing Then
        Adres = Bul.Address
        If Not Adresler.Exists(Adres) Then
            Adresler.Add Adres, Nothing
            Do
                If InStr(1, WorksheetFunction.Trim(Bul.Value), " ") > 0 Then
                    Kelime = WorksheetFunction.Trim(Replace(Replace(Bul.Value, "-", ""), "/", ""))
                    Kelime = UCase(Replace(Replace(Kelime, "ı", "I"), "i", "İ"))
                    Kelime = Split(Kelime, " ")
                
                    For Y = LBound(Kelime) To UBound(Kelime)
                        Bulunan_Kelimeler.Add CStr(Kelime(Y))
                    Next
                    
                    Bulunan_Kelimeler.Sort
                    
                    For Each Aranan_Kelime In Aranan_Kelimeler
                        If Aranan_Kelime = Bulunan_Kelimeler.Item(Say) Then
                            Say = Say + 1
                        End If
                    Next
                    
                    If Say = Aranan_Kelimeler.Count Then K_EĞERSAY = K_EĞERSAY + 1
                    
                    Bulunan_Kelimeler.Clear
                    Say = 0
                End If
                
                Set Bul = Ölçüt_Aralığı.Find(What:=Veri(0), After:=Bul, LookIn:=xlValues, LookAt:=xlPart)
                If Not Adresler.Exists(Bul.Address) And Not Bul Is Nothing Then
                    Adresler.Add Bul.Address, Nothing
                Else
                    Adresler.RemoveAll
                    'GoTo Son
                End If
            Loop While Not Bul Is Nothing And Bul.Address <> Adres
        End If
    End If
    
Son:
    Set Bul = Nothing
    Set Adresler = Nothing
    Set Aranan_Kelimeler = Nothing
    Set Bulunan_Kelimeler = Nothing
End Function
 

Ekli dosyalar

Üst