• DİKKAT

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

Bir sütundaki verilerimin içinde arama yapıp en yakın değeri bulmak

Şöyle düşün satır satır bakacak eşleştirecek bakerkende o kodda Left(ara,i) aldıya işte satırda baktırdığı verininde o kadar değerini alıp bakacak eşleşirse eşleştiği satırı tespit edeceğiz oraya satır ekleyeceğiz.
 
Hoca valla yine anlamadım. Neyse benden bu kadar :) :)
 
Aşağıdaki kodu deneyin.

Kod:
Sub Satir_Ekle()
    Aranan = Range("F2").Value
    
    For X = Len(Aranan) To 1 Step -1
        Set Bul = Range("C:C").Find(Left(Aranan, X) & "*")
        If Not Bul Is Nothing Then
            Bul.Offset(1, 0).EntireRow.Insert
            Exit For
        End If
    Next
End Sub
 
Korhan hocam teşekkür ederim.
Bir küçük sorum daha olacaktı.
610501001018009
aranan bu olsun
alt alta da
610501001018005
610501001018007
610501001018008
610501001018011
610501001018013
610501001018016
610501001018018
610501001018019
610501001018021
610501001018023
olsun art arda hemen hemen 13 karakteri aynı olan 5 satır olduğunu düşünelim
aradığımız olan 610501001018017 sayısını ilk bulduğu yer olan 610501001018011 in altına bir satır açıyor bunu gerekli yer olan 610501001018016 ının altına ve 610501001018018 in üstene nasıl denk getirebilir.
Bulduğumuz yerde aradığımız karakterin uzunluğu kadar olanlarda sıra ile büyük mü küçükmü diye baktırsak zaten 5 6 döngü bakacak ilk kendinden büyük olanı bulduğu yerin üstü olacak sanırım mantığı.
Birde bu şekilde bakabilir miyiz Korhan Hocam.
Ben örnek dosyamı da atayım.
http://dosya.web.tr/KDzy7O
 
Kod:
Sub satirEkle()
    ara = Range("F2").Value
    For i = Len(ara) To 1 Step -1
        Set bul = Columns(3).Find(Left(ara, i))
        If Not bul Is Nothing Then
            For ii = bul.Row To Cells(Rows.Count, "c").End(3).Row
                If Cells(ii, "c") > ara Then
                    Rows(ii).Insert
                    GoTo atla
                End If
            Next ii
        End If
    Next i
atla:
End Sub
 
Hocam kodun 1inci for döngüsünden sonraki i den sonraki yerine Korhan hocamın getirdiği & "*" ekleyince kod mükemmel bir şekilde çalıştı teşekkür ederim. son hali aşağıdadır.
Kod:
Private Sub CommandButton2_Click()

'VeyselEmre, Korhan hocama teşekkürler
ara = Range("F2").Value
    For i = Len(ara) To 1 Step -1
        Set bul = Columns(3).Find(Left(ara, i) & "*")
        If Not bul Is Nothing Then
            For ii = bul.Row To Cells(Rows.Count, "c").End(3).Row
                If Cells(ii, "c") > ara Then
                    Rows(ii).Insert
                    GoTo atla
                End If
            Next ii
        End If
    Next i
atla:

End Sub

Eğer sub veya funtion da kullanılacaksa bu şekilde çalışıyor
lakin bir Private Sub içinde ise
Bu satır Set bul = Columns(3).Find(Left(ara, i) & "*") aşağıdaki gibi olmalı.
Set bul = Range("C:C").Find(Left(ara, s) & "*")
 
Son düzenleme:
Geri
Üst