Otomatik arama filtreleme yaparken sayıları bulmuyor

Katılım
27 Mart 2023
Mesajlar
5
Excel Vers. ve Dili
Excel 2013
Değerli Üstadlar,
Arama çubuğu ile arama yapıp verilerin filelenmesini yapıyorum fakat arama sütununda hem yazı hemde rakam bulunuyor.
Yazıları buluyor ve listeliyor fakat rakamları bulamıyor, acaba nerede yanlış yapıyorum yardım rica ediyorum.

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

aramaMetni = Sheets("VERILER").Range("c2").Value
Set tabloalan = Sheets("VERILER").ListObjects("Personel").DataBodyRange
Sheets("VERILER").ListObjects("Personel").AutoFilter.ShowAllData
If aramaMetni <> "" Then
Sheets("VERILER").ListObjects("Personel").DataBodyRange.AutoFilter Field:=2, Criteria1:="*" & aramaMetni & "*"
End If

End Sub

İlginize şimdiden teşekkür ederim.
 

Muzaffer Ali

Destek Ekibi
Destek Ekibi
Katılım
5 Haziran 2006
Mesajlar
6,167
Excel Vers. ve Dili
2019 Türkçe
Merhaba.

"*aranan*" şeklinde başta, sonda yada hem başta hem sonda yıldız işareti varsa sadece metin filtresi yapar.

Örneğin: "*1*" yazıp filtre yaparsanız.

Rakam olarak 1 olanları bulmaz ama hücrede "deneme123" yazıyorsa bulur. Çünkü "deneme123" bir metindir.

Yani rakam filtresi yapınca hücre içeriği tam eşleşme olması lazım ve Criteria: "=1" şeklinde yazmalısınız.

Sizin kodlarınıız buna göre düzenlersek şöyle olmalı.

Kod:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    aramaMetni = Sheets("VERILER").Range("c2").Value
    Set tabloalan = Sheets("VERILER").ListObjects("Personel").DataBodyRange
    Sheets("VERILER").ListObjects("Personel").AutoFilter.ShowAllData
    If aramaMetni <> "" Then
        Sheets("VERILER").ListObjects("Personel").DataBodyRange.AutoFilter Field:=2, Operator:=xlOr, Criteria1:="*" & AramaMetni & "*", Criteria2:="=" & AramaMetni
    End If
End Sub
Arama metni eğer metinse hücre içeriğinde varsa bulur, eğer rakamsa içerik eşitse bulur.
 

veyselemre

Özel Üye
Katılım
9 Mart 2005
Mesajlar
3,646
Excel Vers. ve Dili
Pro Plus 2021
Kodu VERILER sayfasının kod sayfasına yerleştirin. SelectionChange yerine Change eventine yazdım. Yani sayfadaki her harekette
tetiklenmeyecek yalnızca c2 hücresi değiştiği zaman çalışacaktır.
Kodda dikkat edilmesi gereken nokta Muzaffer Ali beyin belirttiği üzere hücre içerisindeki metin içerisinde sayı aranıyorsa C2 hücresine *12*
şeklinde kriter girmeniz gerekmektedir.

Kod:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address <> "$C$2" Then Exit Sub
    aramaMetni = Range("C2").Value
    With Sheets("VERILER").ListObjects("Personel")
        If .ShowAutoFilter Then .AutoFilter.ShowAllData
        If aramaMetni <> "" Then
            If Not WorksheetFunction.IsNumber(aramaMetni) Then aramaMetni = "*" & aramaMetni & "*"
            .DataBodyRange.AutoFilter Field:=2, Criteria1:=aramaMetni
        End If
    End With
End Sub
 
Katılım
27 Mart 2023
Mesajlar
5
Excel Vers. ve Dili
Excel 2013
Değerli Üstadlar elleriniz dert görmesin,
C2 hücresine yazarar aramak istediğim sütundaki değerlerin bazıları tamamen harflerden oluşuyor bazıları da tamamen sayılardan oluşuyor.
Harf olanlar için tam eşleşme gerekmiyor ama sayı içeren hücreler için tam eşleşme gerekiyor demişsiniz.
Sayı için de tam eşleşme gerekmeden, örneğin hücrede "12345678" arıyorum ve arama hücresi olan C2 ye "456" yazdığımda bunu da listelesin istiyorum, yani tam eşleşme olmadan da mümkün müdür ?

Bir de bu aramayı 2. stünda yaptırıyorum fakat aradığımı 3. 4. ve 5. sütunlarda da aramasını istediğimde nasıl bir değişiklik yapmamız gerekiyor acaba ?

Çok teşekkürler,
 

Muzaffer Ali

Destek Ekibi
Destek Ekibi
Katılım
5 Haziran 2006
Mesajlar
6,167
Excel Vers. ve Dili
2019 Türkçe
Rakam olursa tam eşleşme, büyük yada küçük eşleşmesi olabilir ama içerir olamaz.

Diğer kolonlarda da filtre yapmak isterseniz aşağıdaki gibi Field:=2 kısmını değiştirerek yeni bir satır eklemeniz yeterli

Kod:
Sheets("VERILER").ListObjects("Personel").DataBodyRange.AutoFilter Field:=2, Operator:=xlOr, Criteria1:="*" & AramaMetni & "*", Criteria2:="=" & AramaMetni
Sheets("VERILER").ListObjects("Personel").DataBodyRange.AutoFilter Field:=3, Operator:=xlOr, Criteria1:="*" & AramaMetni & "*", Criteria2:="=" & AramaMetni
Sheets("VERILER").ListObjects("Personel").DataBodyRange.AutoFilter Field:=4, Operator:=xlOr, Criteria1:="*" & AramaMetni & "*", Criteria2:="=" & AramaMetni
 
Katılım
27 Mart 2023
Mesajlar
5
Excel Vers. ve Dili
Excel 2013
Muzaffer hocam, yardımlarınız ve aydınlatıcı bilgileriniz için çok teşekkür ederim.
 
Üst