• DİKKAT

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

Adres İçinde Bulunan İli Almak

mustafa1205

Altın Üye
Katılım
23 Ekim 2010
Mesajlar
1,435
Excel Vers. ve Dili
Office 2016 / 64 Bit - Türkçe
Ekte örneği bulunan çalışmamda açıklama yapmaya çalıştım. Adres sütununda bulunan adresin içindeki "İl" bilgisini almak istiyorum. Teşekkür ederim
 

Ekli dosyalar

C sütununa 81 ilin adını yazıp şu kodları bir deneyiniz;

Kod:
Sub Emre()
    Dim i As Integer
    Dim evn As Range
    For i = 1 To Range("C65536").End(3).Row
        Set evn = Columns(1).Find(Cells(i, "C"), , , xlPart)
        If Not evn Is Nothing Then
            evn.Offset(0, 1).Value = Cells(i, "C")
        End If
    Next i
    Set evn = Nothing: i = Empty
End Sub

Dosyayı da ekliyorum..
 

Ekli dosyalar

Murat Hocam tek kelime ile mükemmel olmuş. Ne diyeyim elinize sağlık. Çok teşekkür ediyorum
 
Rica ederim...

Dilerseniz şu kodları kullanın; İlleri A sütunudaki gibi büyük harfe çeririr. Ayrıca I ve İ harleri için düzeltme ekledim...
Kod:
Sub Emre()
    Dim i As Integer
    Dim evn As Range
    For i = 1 To Range("C65536").End(3).Row
        Set evn = Columns(1).Find(Cells(i, "C"), , , xlPart)
        If Not evn Is Nothing Then
            If VBA.Left(Cells(i, "C"), 1) = "I" Then
                evn.Offset(0, 1).Value = Replace(Replace(UCase(Cells(i, "C")), "I", "I"), "ı", "I")
                    Else
                evn.Offset(0, 1).Value = Replace(Replace(UCase(Cells(i, "C")), "I", "İ"), "ı", "I")
            End If
        End If
    Next i
    Set evn = Nothing: i = Empty
End Sub
Bir de ayriyeten, iki isimli olan illerimiz için, illerin olduğu listeye, ilin iki ismini de eklemenizi öneririm.

ADAPAZARI
SAKARYA
KOCAELİ
İZMİT

gibi...
 
Çok güzel bir noktaya değinmişsiniz. İki isimli olan iller hiç aklıma gelmemişti. Mükemmel olmuş Murat Hocam. Tekrar çok teşekkür ederim.
 
Merhaba,

Bir eleştiri : Eğer adres "Samsun caddesi nu:6 Çorum" ise şelir olarak Samsun'u veriyor.
adres "Ankara caddesi nu:6 Çorum" olduğunda Çorum'u veriyor çünkü Çorum'un plaka kodu 19 olduğu için Ankara'yı atlıyor :)
 
Merhaba,

Bir denemede benden.

Kod:
Sub IlleriBul()
    
    Dim i   As Long, _
        j   As Integer, _
        c   As Range, _
        d
    
    Application.ScreenUpdating = False
    
    For i = 2 To Cells(Rows.Count, "A").End(3).Row
    
        d = Split(Cells(i, "A"), " ")
        
        For j = UBound(d) To UBound(d) - 2 Step -1
            
            Set c = Range("C1:C82").Find(d(j), LookIn:=xlValues)
            If Not c Is Nothing Then
                Cells(i, "B") = c.Value
                Exit For
            End If
            
        Next j
    Next i
    
    Application.ScreenUpdating = True
    
    MsgBox "Doğru ayırabildim mi acep?"
    
End Sub
 

Ekli dosyalar

Merhaba,

Sorunuz fonksyionlar bölümünde olduğu için alternatif olarak aşağıdaki dizi formülünü kullanabilirsiniz.

Kod:
=KAYDIR($C$1;KAÇINCI(MAK(EĞER(ESAYIYSA(MBUL($C$1:$C$100;A1;1));MBUL($C$1:$C$100;A1;1)));MBUL($C$1:$C$100;A1;1);0)-1;;;)

Formülü CTRL+SHIFT+ENTER tuşları ile tamamlayın.

Tabi Necdet beyin değindiği gibi cadde ya da mahalle isimlerinde de il adları geçiyorsa sağlıklı sonuçlar çıkmayacaktır.
 
Ekte örneği bulunan çalışmamda açıklama yapmaya çalıştım. Adres sütununda bulunan adresin içindeki "İl" bilgisini almak istiyorum. Teşekkür ederim

Merhaba,

Alternatif olsun. Necdet bey'in önerisi dikkate alınmıştır.

B1:

Kod:
=EĞER(TOPLA(ESAYIYSA(MBUL($C$1:$C$10;A1))+0)>0;İNDİS($C$1:$C$10;KAÇINCI(MAK(EĞER(ESAYIYSA(MBUL($C$1:$C$10;A1));MBUL($C$1:$C$10;A1)));MBUL($C$1:$C$10;A1);0));"")

Dizi formülüdür. Girişini ctrl + shift + enter tuş kombinasyonu ile yapınız.
 
Merhaba,

Başka bir alternatif;

Sağdan 30 karakter içinde arama yapar. Dizi formüldür.

Kod:
=KAYDIR($C$1;KAÇINCI(DOĞRU;ESAYIYSA(MBUL($C$1:$C$100;SAĞDAN(A1;30);1));0)-1;;;)
 
Böylesi çok daha doğru olmuş... :bravo:
 
Tüm Hocalarıma teşekkür ediyorum. Düşünemediğim bir çok ayrıntıyıda eklemişsiniz. Tekrar teşekkürlerimi sunarım.
 
Sevgili Hocalarım Formül ile olan çalışmayı denedim bende yok uyarısı veriyor. Hiç bir ili bulmuyor. Nedeni ne olabilir acaba?
 
8 - 9 ve 10. mesajda "Dizi formülüdür" yazıyor gördünüz mü ? Orada ne yapmanız gerektiği yazıyor.
 
8 nolu mesajdaki dizi formülü bendede #YOK hatası veriyor.
Sayın Murat Osma nın ilk makrosuda bende çalışınca hiç bir farklılık olmadı. ama diğerlerinde sorun yok ellerinize sağlık.
Sayın Necdet beyin makrosunda küçük harf büyük harf olayını nasıl karşılaştırdığına kafa yorumyorum şu an
 
Merhaba,

#8 nolu mesajımdaki formülü ilk mesajdaki dosyaya uygulayıp deneyiniz.
 
Sayın Murat Osma nın ilk makrosuda bende çalışınca hiç bir farklılık olmadı. ama diğerlerinde sorun yok ellerinize sağlık.
Dosyayı indirdiyseniz, C sütununda illerin olduğunu göreceksiniz, önerdiğim kodlar o illeri referans alarak il adını ayırıyor. Eğer sizin dosyanızda C sütunundaki iller yoksa kodlar çalışmayacaktır. Herhalde bu nedenle hiçbir farklılık göstermedi...
 
#8 i hem birinci hem Sayın Murat Osmanın yaptığı dosyaya kopyaladım dizi şeklinde ama gene yok mesajını aldım. Ben 2003 de ve 2010 da beceremedim malesef..
 

Ekli dosyalar

  • Ekran Alıntısı.jpg
    Ekran Alıntısı.jpg
    101.9 KB · Görüntüleme: 9
Sayın Necdet beyin makrosunda küçük harf büyük harf olayını nasıl karşılaştırdığına kafa yorumyorum şu an

Find komutu aksi belirtilmediği sürece büyük/küçük harfe duyarlı değildir.
 
Sayın Hocalarım fonksiyon olarak il bilgisini almada malesef başarılı olamadım. Dizi formulü olarak uyguladım ancak yine olmadı "yok" uyarısı veriyor. Yardım etme imkanınız olabilirmi acaba ?
 
Geri
Üst