listboxta uzun cümlede iki ayrı kelime ile süzme

Katılım
2 Nisan 2006
Mesajlar
32
Excel Vers. ve Dili
2007 türkçe
HERKESE İYİ AKŞAMLAR,

LUG TİPİ KELEBEK VANA ÇAP DN25
PASLANMAZ KÜRESEL VANA ÇAP DN20
LUG TİPİ KELEBEK VANA ÇAP DN20
WAFER TİPİ VANA ÇAP DN25

BU TARZ ÇOK KELİMELİ SATIRLAR İÇEREN TABLODAN TEXTBOX YARDIMIYLA LİSTBOXA SÜZME İŞLEMİ YAPIYORUM. MESELA LUG DN25 YAZDIĞIM ZAMAN BU İKİ KELİMEYİ İÇEREN SATIRLARI LİSTELEMEK MÜMKÜNMÜDÜR. YANİ ARALARINDA BAŞKA KELİMELER OLAN İKİ KELİMEYLE FİLTRE YAPILABİRMİ.
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
41,327
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Lütfen forum kurallarını okuyunuz..
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
41,327
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Büyük Harf Kısıtlaması:
- Mesaj yazarken büyük harf kullanmak bağırmak anlamına geleceği için yazılarınızı kesinlikle büyük harf kullanarak yazmayınız.
 
Katılım
2 Nisan 2006
Mesajlar
32
Excel Vers. ve Dili
2007 türkçe
Özür dilerim bilmiyordum.

Korhan bey dediğim olay yapılabilir mi acaba sorularda benzer birşey bulamadım yardımcı olursanız çok sevinirim.
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
41,327
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Örnek dosya ekleyiniz.
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
41,327
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Mesela VANA ve LUG yazıp aradığınızda ilgili metnin içinde mutlaka iki kelimede olması gerekiyor mu? Yoksa bir tanesi eşleşmesi yeterli mi?
 
Katılım
2 Nisan 2006
Mesajlar
32
Excel Vers. ve Dili
2007 türkçe
VANA LUG DN15 Yazdığımda içinde 3ü geçen metinleri getirmesini istiyorum mümkünse.
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
41,327
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Deneyiniz.

C++:
Sub kayıtal()
    Dim kayısayısı, satır As Variant, sh As Worksheet, x As Long, Aranan As Variant, i As Integer
    
    Set sh = Sheets("fiyatlar")
    
    ListBox1.Clear
    ListBox1.ColumnCount = 4
    ListBox1.ColumnWidths = "150;450;100;100"
    
    kayıtsayısı = sh.Cells(sh.Rows.Count, "y").End(xlUp).Row
    
    For satır = 4 To kayıtsayısı
        If InStr(1, TextBox1, " ") = 0 Then
            If InStr(1, UCase(Replace(Replace(sh.Range("y" & satır), "ı", "I"), "i", "İ")), TextBox1) > 0 Then
                ListBox1.AddItem
                ListBox1.List(x, 0) = sh.Cells(satır, "B").Value
                ListBox1.List(x, 1) = sh.Cells(satır, "C").Value
                ListBox1.List(x, 2) = sh.Cells(satır, "I").Value
                ListBox1.List(x, 3) = sh.Cells(satır, "G").Value & " " & sh.Cells(satır, "h").Value
                x = x + 1
            End If
        Else
            Aranan = Split(TextBox1, " ")
            Say = 0
            For i = LBound(Aranan) To UBound(Aranan)
                If InStr(1, UCase(Replace(Replace(sh.Range("y" & satır), "ı", "I"), "i", "İ")), Aranan(i)) > 0 Then
                    Say = Say + 1
                End If
            Next
                        
            If Say = UBound(Aranan) + 1 Then
                ListBox1.AddItem
                ListBox1.List(x, 0) = sh.Cells(satır, "B").Value
                ListBox1.List(x, 1) = sh.Cells(satır, "C").Value
                ListBox1.List(x, 2) = sh.Cells(satır, "I").Value
                ListBox1.List(x, 3) = sh.Cells(satır, "G").Value & " " & sh.Cells(satır, "h").Value
                x = x + 1
            End If
        End If
    Next
End Sub
 
Katılım
2 Nisan 2006
Mesajlar
32
Excel Vers. ve Dili
2007 türkçe
Emeğinize sağlık Korhan bey tam istediğim gibi olmuş. Çok çok çok teşekkür ediyorum.

Dosyada yazmıştım gördünüz mü bilmiyorum ama son bir şey daha rica edeceğim. Listboxta tekli seçim yapıp çift tıklayınca aktif hücreye alıyor. Çoklu seçimi yapıldığında seçtiklerimin malzeme kodlarını aktif hücreden başlayarak aşağı doğru eklemesi mümkünmüdür bu konuda yardımcı olabilir misiniz.

Tekrardan çok teşekkür ediyorum.
 

teknikyapı

Altın Üye
Katılım
30 Nisan 2007
Mesajlar
396
Excel Vers. ve Dili
Office 365
Sn.Korhan Ayhan ,

( ilgili soruyu burada soracaktım kusura bakmayın)

Bu örnekte =+BİRLEŞTİR(B6;" ";C6;" ";" ";I6) komutu ile hücrelerdeki kelimeleri Y sütununda birleştiriyor ve Y sütunda arama yapıyor.
Bunu aramayı mesela SR.Range("A2:G" & [a65536].End(3).Row) gibi bir alalıkta ve sütunlarda yapabilirmiyiz acaba ?
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
41,327
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
İstediğiniz gibi değiştirip deneyebilirsiniz. Birden fazla sütunda arama yapılacaksa koda müdahale etmek gerekebilir.
 

teknikyapı

Altın Üye
Katılım
30 Nisan 2007
Mesajlar
396
Excel Vers. ve Dili
Office 365
Sabrınız için öncelikle teşekkür ederim.
Benim projemdeki esas kodlar aşağıdaki gibidir.
Burada yapmak istediğim en basit anlamda ; Textboxa yazdığım kelimeleri AYIRARAK ilgili alandaki hücrelerde bularak o satırı Listwiev'de listelemesi.
( Örneğin , Textboxta Elma Armut Muz yazdığımda bunların herhangi birinin olduğu hücrenin satırını listelesin)
Yani , misal A2 de Elma , B9 da Armut , F22 de Muz var ise eğer bu 3 satır bilgileri Listwieve gelsin.

İnşallah anlatabilmişimdir...


Private Sub CommandButton8_Click()

'ARAMA BUTONU

Set SR = Sheets("fiyat")

If TextBox7 = "" Then Exit Sub

ListView1.ListItems.Clear

Set alan = SR.Range("A2:F" & [a65536].End(3).Row)

''''''''''''''
Dim aranan As String
aranan = "*" & TextBox7.Text & "*"
If InStr(1, TextBox7.Text, Chr(32), vbTextCompare) <> "" Then aranan = Replace(aranan, Chr(32), Chr(42))
Set bul = alan.Find(aranan)

'''''''''''''''''''
If TextBox7 = "" Then Exit Sub


If Not bul Is Nothing Then
Adres = bul.Address
Do
satır = bul.Row
With ListView1
.ListItems.Add , , SR.Cells(satır, 1)
X = X + 1
.ListItems(X).ListSubItems.Add , , SR.Cells(satır, 2)
.ListItems(X).ListSubItems.Add , , SR.Cells(satır, 3)
.ListItems(X).ListSubItems.Add , , Format(SR.Cells(satır, 4), "#,##0.00")
.ListItems(X).ListSubItems.Add , , SR.Cells(satır, 5)
.ListItems(X).ListSubItems.Add , , SR.Cells(satır, 6)
SAY = SAY + 1

'eğer hücre başında (*) işareti var ise satırı kırmızı renklendir
If Left(SR.Cells(satır, 2), 1) = "*" Then
.ListItems(X).ListSubItems(1).ForeColor = vbBlue
.ListItems(X).ForeColor = vbBlue
End If

'eğer hücre başında (-) işareti var ise satırı kırmızı renklendir
If Left(SR.Cells(satır, 2), 1) = "-" Then
.ListItems(X).ListSubItems(1).ForeColor = vbRed
.ListItems(X).ForeColor = vbRed
End If

End With
Set bul = alan.FindNext(bul)

Loop While Not bul Is Nothing And bul.Address <> Adres

End If

Label1 = SAY & " ADET"

Set SR = Nothing
Set alan = Nothing
Set bul = Nothing

End Sub
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
41,327
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Paylaştığım kod zaten sizin bahsettiğiniz şekilde arama yapıyor. Siz sadece kendinize uyarlayacaksınız.
 

teknikyapı

Altın Üye
Katılım
30 Nisan 2007
Mesajlar
396
Excel Vers. ve Dili
Office 365
Sizin 10.mesajnızdaki kod ile yapınca kelimeler Y sütununda birleştirilen hücrede arama yapıyor ama bu benim dosyaya uygun değil maalesef ( binlerce veri var ayrıca sayfa uygun değil)
acaba başka yöntem olamaz mı ( en azından üstteki benim kodlarda) ?
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
41,327
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Örnek dosyanızı paylaşırsanız yardım almanız kolaylaşır.
 

teknikyapı

Altın Üye
Katılım
30 Nisan 2007
Mesajlar
396
Excel Vers. ve Dili
Office 365
Üstadım,
dediğiniz gibi yaptım

For a = 2 To Cells(65536, 1).End(xlUp).Row
Cells(a, 8) = Cells(a, 1) & " " & Cells(a, 2) & " " & Cells(a, 5) & " " & Cells(a, 6)
Next

bu BİRLEŞTİR kotları ile bir hücreye kelimeleri GEÇİCİ birleştirip arama yapıp sonra sildiriyorum !
Gayet iyi fakat , aranan kelimeyi hücredeki sıralamaya göre arıyor
Yani ; hücrede "Sıvacı ustası" diye textboxta arattığım kelimeyi "usta sıvacı" diye bulamıyor , sıralamadan dolayı sanırım.

Sanırım aşağıdaki kodlarda bir değişiklik olmalı
benim için çok teknik bir konu
bunuda halledersek çok memnun olacağım
yinede canınız sağolsun...

If InStr(1, TextBox7.Text, Chr(32), vbTextCompare) <> "" Then aranan = Replace(aranan, Chr(32), Chr(42))
Set bul = alan.Find(aranan)
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
41,327
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Sizin paylaştığınız kod TextBox nesnesini bir bütün olarak arıyor. Bu sebeple sıralama önem arz ediyor.

Benim paylaştığım kod ise TextBox nesnesini kelimelere bölüp arama yapıyor. Bu sebeple karışık yazsanız dahi sonuç üretmektedir.
 

teknikyapı

Altın Üye
Katılım
30 Nisan 2007
Mesajlar
396
Excel Vers. ve Dili
Office 365
Yani bir nevi GOOGLE arama motoru gibi ...çok iyi
Dosyayı basitleştirip eklemeyi düşünüyorum
Yardımlarınız için çok teşekkür ederim
 
Üst