• DİKKAT

    DOSYA İndirmek/Yüklemek için ÜCRETLİ ALTIN ÜYELİK Gereklidir!
    Altın Üyelik Hakkında Bilgi

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İ.
 
Lütfen forum kurallarını okuyunuz..
 
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.
 
Ö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.
 
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?
 
VANA LUG DN15 Yazdığımda içinde 3ü geçen metinleri getirmesini istiyorum mümkünse.
 
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
 
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.
 
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 ?
 
İstediğiniz gibi değiştirip deneyebilirsiniz. Birden fazla sütunda arama yapılacaksa koda müdahale etmek gerekebilir.
 
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
 
Paylaştığım kod zaten sizin bahsettiğiniz şekilde arama yapıyor. Siz sadece kendinize uyarlayacaksınız.
 
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) ?
 
Örnek dosyanızı paylaşırsanız yardım almanız kolaylaşır.
 
Ü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)
 
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.
 
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
 
Geri
Üst