Adres içerisinden sadece mahalleleri ayırma

Katılım
27 Nisan 2021
Mesajlar
14
Excel Vers. ve Dili
Office Plus 2016 Tr-En - 64bit
Merhaba üstadlar,

Ben takdir edersiniz ki forumda hem yeni hem de excel de ileri seviye olmayan (ama fena da sayılmam ufak tefek kod yazabiliyorum) bir arkadaşım. Sizden adres içerisinden sadece mahalleleri çekebilmek için yardım ve öneriler istiyorum. Bu 10k lık verinin sadece bir kısmıdır. Göründüğü üzere çok farklı "mahalle" varyasyonları var. Neredeyse 300-500 farklı mahalle varyasyonu var. Bir avantaj olarak mahalle adres satırının ilk kelimesi olarak geçiyor fakat ne yazık ki her zaman da mahalle bilgisi yer almıyor. bana fikir sunabileceğinize inanıyorum. İlginize şimdiden teşekkür ederim.
 

Ekli dosyalar

Haluk

𐱅𐰇𐰼𐰚
Katılım
7 Temmuz 2004
Mesajlar
12,270
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Ekli dosyaya bakın, işinize yarayabilir...

.
 

Ekli dosyalar

Katılım
27 Nisan 2021
Mesajlar
14
Excel Vers. ve Dili
Office Plus 2016 Tr-En - 64bit
Ekli dosyaya bakın, işinize yarayabilir...

.
hocam gerçekten üstadsınız 5 dakika içerisinde cevap verip işimi neredeyse %95 kolaylaştırdınız. Şimdi ben formülü aradım ama extractstring çıkıyor. Sanırım bu excel içerisinde text ile yapıldı ya da bir eklenti ile mi gerçekleştirildi. Çünkü ben formülü göremiyorum. Bu konuda cahillimi maruz görün bana işlemi kısaca anlatabilir misin yoksa başka bir sayfaya alıp sürükle bırakla işlemi devam ettirebiliyorum. Ama aynı zamanda balık tutmayı da öğrenmek istiyorum. Çok teşekkürler tekrardan...
 

Mahir64

Destek Ekibi
Destek Ekibi
Katılım
19 Nisan 2006
Mesajlar
6,667
Excel Vers. ve Dili
Excel 2013-Türkçe
Excel 2016-Türkçe
Merhaba,
Alternatif olsun.
C++:
=EĞERHATA(PARÇAAL(A1;1;MBUL(" M";A1));"")
 

Haluk

𐱅𐰇𐰼𐰚
Katılım
7 Temmuz 2004
Mesajlar
12,270
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
hocam gerçekten üstadsınız 5 dakika içerisinde cevap verip işimi neredeyse %95 kolaylaştırdınız. Şimdi ben formülü aradım ama extractstring çıkıyor. Sanırım bu excel içerisinde text ile yapıldı ya da bir eklenti ile mi gerçekleştirildi. Çünkü ben formülü göremiyorum. Bu konuda cahillimi maruz görün bana işlemi kısaca anlatabilir misin yoksa başka bir sayfaya alıp sürükle bırakla işlemi devam ettirebiliyorum. Ama aynı zamanda balık tutmayı da öğrenmek istiyorum. Çok teşekkürler tekrardan...

Kod yazdığınızdan bahsetmiştiniz, VBA editörü açtığınızda Module1 içinde kodları görebilirsiniz...

.
 
Katılım
27 Nisan 2021
Mesajlar
14
Excel Vers. ve Dili
Office Plus 2016 Tr-En - 64bit
Kod yazdığınızdan bahsetmiştiniz, VBA editörü açtığınızda Module1 içinde kodları görebilirsiniz...

.
Evet hocam aslında ben excel de hazır fonksiyon kullanıyormuşum özür :/ Ama biraz python biliyorum. orada birşeyler yapıyordum ama burada hiç vb kullanmamıştım. Sayenizde adım atıyorum. Tek tek inceleyeceğim. Çok büyük faydanız oldu. Teşekkürler
 

YUSUF44

Destek Ekibi
Destek Ekibi
Katılım
4 Ocak 2006
Mesajlar
12,084
Excel Vers. ve Dili
İş : Ofis 365 - Türkçe
Ev: Ofis 365 - Türkçe
teşekkürler hocam bunu da denedim. Bu da güzel yöntem.
Yalnız bu formül örneğin Hüseyin Okan Merzeci için Hüseyin Okan sonucunu veriyor ve ikinci ya da sonraki kelimeleri "M" ile başlayan satırlarda da içinde Mahalle/Mah/Mh ifadesi geçmediği halde sonuç veriyor. Bir de bulduğu mahallenin sonunda boşluk karakteri oluyor.

Formülü aşağıdaki gibi kullanınca daha doğru sonuç veriyor:

=EĞERHATA(PARÇAAL(A1;1;MBUL(" Mahallesi";A1)-1);EĞERHATA(PARÇAAL(A1;1;MBUL(" Mah";A1)-1);EĞERHATA(PARÇAAL(A1;1;MBUL(" Mh";A1)-1);"")))

Bu halinde @Haluk 'un verdiği mükemmel çözümle arasında sadece bir satırda farklı sonuç çıkıyor. O da 240. satırda aynı hücrede iki defa mahalle ifadesi geçtiği daha doğrusu adres iki kere yazıldığı için Haluk Bey'in çözümü ikinci mahalle ifadesinden önceki tüm adresi sonuç olarak gösteriyor.
 

Zeki Gürsoy

Uzman
Uzman
Katılım
31 Aralık 2005
Mesajlar
4,225
Excel Vers. ve Dili
Office 2019 (64 bit) - Türkçe
Haluk üstadın yazdığı koddaki pattern'i aşağıdaki gibi de deneyebilirsiniz.

Rich (BB code):
(.+)(?=\s*mahalles(?:İ|i)|mah\.?|mh\.?|m\.?\s)
 

YUSUF44

Destek Ekibi
Destek Ekibi
Katılım
4 Ocak 2006
Mesajlar
12,084
Excel Vers. ve Dili
İş : Ofis 365 - Türkçe
Ev: Ofis 365 - Türkçe
Haluk üstadın yazdığı koddaki pattern'i aşağıdaki gibi de deneyebilirsiniz.

Rich (BB code):
(.+)(?=\s*mahalles(?:İ|i)|mah\.?|mh\.?|m\.?\s)
Bu şekilde kullanınca da sonucun sonunda boşluk karakteri oluyor. KIRP ile birlikte kullanınca bu sorun düzeliyor ama her halükarda birden fazla " m" olunca farklı sonuç veriyor. İlginçtir, 36 ve 37. satırdaki veriler aynı yapıda olduğu halde (ikisinin de sonunda Mersin var) 36. satırda hatalı sonuç verirken 37. satırda doğru sonuç veriyor.

Bir de verilen her çözüm mahalle bilgisi eğer hücrenin başında değilse hatalı sonuç veriyor. Örneğin 73, 74, 77 ve 78 inci satırlar.
 
Katılım
27 Nisan 2021
Mesajlar
14
Excel Vers. ve Dili
Office Plus 2016 Tr-En - 64bit
tüm yorumlarınız için çok teşekkür ederim. İşimi oldukça hafiflettiniz. Bende sizin yazdıklarınıza "köy" ekleyerek köy geçenleri de ayrıştırmış oldum.
çalıştığım dosyada adres bilgileri düzenli olmadığı için manüel düzenlemede gerekiyor. bir kısmını düzenledim ancak belli bir aşamadan sonra sanki yeniden bir formül yazarak işin gerisi daha kolay halledilebilir diye düşündüm ancak işin içinden çıkamadım. yeniden sizlere danışmak istedim.
Ekli dosyada A sütununda düzenlenecek B sütununda ise düzenlenmiş mahalle isimleri var. örneğin 2 inci sütunda "gaziantep şehitkamil batıkent" yazıyor. ben bunu elle düzenlerken "gaziantep şehitkamil" yazılı yeri siliyorum. B sütununda ise bu isimler düzenlendi. çeşitli yazım varyasyonlarıda mevcut. acaba a sütununda geçen batıkent kelimesini veya 7incisatırda geçen isiklar veya 10uncuda geçen yeşilyurt gibi öncesinde şehir yada cadde bilgisi geçenleri soldaki gibi temizlenmiş mahalle adlarını taratarak temizleyebilirmiyim.
yada başka bir yöntem önerebilirmisinz?
 

Ekli dosyalar

Üst