- Katılım
- 11 Ocak 2008
- Mesajlar
- 1,395
- Excel Vers. ve Dili
- Office 365 (Türkçe)
DOSYA İndirmek/Yüklemek için ÜCRETLİ ALTIN ÜYELİK Gereklidir!
Altın Üyelik Hakkında Bilgi
Doğrudur üstadım. Hepiniz çok yardımcı oluyorsunuz. Çok teşekkür ediyorum, sizlere buradaMerhaba,
http://www.excel.web.tr/f14/ban-no-duzeltilmesi-ady-ve-soyad-ayry-ayry-t92917.html
linkinde de buna benzer konu vardı ve yanıtladığımı sanıyorum.
Merhaba,
Yine sağ gösterip sol vuruyorsunuz.
Linkini verdiğim sizin sorunuzda ad ve soyad bitişik yazılıyor ama adın ve soyadın ilk karakteri büyük harf idi.
Ben orada onları kontrol ederek kodları yazdım.
Son gönderdiğiniz dosyalarda ise ad ve soyad bitişik ama soyadın tamamı büyük harf. Bu durumda yazılacak kodlar elbette farklı olacaktır.
Daha önce beni yazdığım ad soyad ayır makrosu ise namusuyla yani dil kurallarına uygun ad ve soyadı ayırır, bitişik olanları değil.
Siz konuyu açık açık ortaya koymalısınız, ya girilen ad soyad AbcdEfg olmalı, ya AbcDEFG olmalı her iki halde yazılacak kodlar farklı olacaktır.
Yani veriler bir sisteme göre olmalıdır.
Birde anlamıyorum Ad ve Soyad neden boşluk karakteriyle birleştirilmez ?
Sub BitisikAdSoyad()
Dim i As Long
Dim j As Integer
Dim m As String
For i = 2 To Cells(Rows.Count, "A").End(3).Row
m = StrReverse(Trim(Cells(i, "A")))
For j = 1 To Len(m)
If Mid(m, j, 1) Like "[A-Z#ÇĞİÖŞÜ]" Then
Cells(i, "C") = Right(Cells(i, "A"), j)
Cells(i, "B") = Replace(Cells(i, "A"), Cells(i, "C"), "")
Exit For
End If
Next j
Next i
End Sub
Çift isimleri ayırmıyor üstadım.ŞerifAliŞensazlı yazdım. ŞerifAli Şensazlı şeklinde ayırdı
Sub Ad_Soyad_Duzenle()
Dim a
Dim i As Long
Dim j As Integer
Dim Ad As String
Dim Soyad As String
Dim AdSoy As String
Application.ScreenUpdating = False
For i = 2 To Cells(Rows.Count, "A").End(3).Row
AdSoy = Trim(Cells(i, "A"))
AdSoy = Duzelt(AdSoy)
Ad = ""
Soyad = ""
a = Split(AdSoy, " ")
If UBound(a) = 0 Then
Ad = Trim(AdSoy)
Else
For j = 0 To UBound(a) - 1
Ad = Trim(Ad & " " & a(j))
Next j
Soyad = Trim(a(UBound(a)))
End If
Cells(i, "B") = Ad
Cells(i, "C") = Soyad
Next i
Application.ScreenUpdating = True
MsgBox "Ad ve Soyad Ayrılmıştır...", vbInformation, "Necdet YEŞERTENER - [URL="http://www.excel.web.tr/"]www.excel.web.tr[/URL]"
End Sub
Function Duzelt(AdSoyad As String)
Dim d() As String
Dim Adet As Integer
Dim i As Integer
Dim j As Integer
Dim Metin As String
Dim Sonuc As String
Metin = " " & AdSoyad
Adet = Len(Metin)
ReDim d(Adet + 10)
j = -1
For i = 2 To Adet
If Mid(Metin, i, 1) Like "[A-Z#ÇĞİÖŞÜ]" And _
Mid(Metin, i - 1, 1) Like "[!A-Z#ÇĞİÖŞÜ]" Then
j = j + 1
d(j) = " "
End If
j = j + 1
d(j) = Mid(Metin, i, 1)
Next i
Sonuc = ""
For i = 0 To UBound(d)
Sonuc = Sonuc & d(i)
Next i
Duzelt = Trim(Sonuc)
End Function
Eline sağlık üstadım.Tekrar Merhaba,
Aşağıdaki kodlar :
AaaBbbbb
AaaBbbCccc
AaaBbbCCC
gibi biçimdeki sözcükleri ayırmaktadır. Kodları inceleyiniz.
Verilerin A sütununda olduğu varsayılmıştır.
Kod:Sub Ad_Soyad_Duzenle() Dim a Dim i As Long Dim j As Integer Dim Ad As String Dim Soyad As String Dim AdSoy As String Application.ScreenUpdating = False For i = 2 To Cells(Rows.Count, "A").End(3).Row AdSoy = Trim(Cells(i, "A")) AdSoy = Duzelt(AdSoy) Ad = "" Soyad = "" a = Split(AdSoy, " ") If UBound(a) = 0 Then Ad = Trim(AdSoy) Else For j = 0 To UBound(a) - 1 Ad = Trim(Ad & " " & a(j)) Next j Soyad = Trim(a(UBound(a))) End If Cells(i, "B") = Ad Cells(i, "C") = Soyad Next i Application.ScreenUpdating = True MsgBox "Ad ve Soyad Ayrılmıştır...", vbInformation, "Necdet YEŞERTENER - [URL="http://www.excel.web.tr/"]www.excel.web.tr[/URL]" End Sub
Kod:Function Duzelt(AdSoyad As String) Dim d() As String Dim Adet As Integer Dim i As Integer Dim j As Integer Dim Metin As String Dim Sonuc As String Metin = " " & AdSoyad Adet = Len(Metin) ReDim d(Adet + 10) j = -1 For i = 2 To Adet If Mid(Metin, i, 1) Like "[A-Z#ÇĞİÖŞÜ]" And _ Mid(Metin, i - 1, 1) Like "[!A-Z#ÇĞİÖŞÜ]" Then j = j + 1 d(j) = " " End If j = j + 1 d(j) = Mid(Metin, i, 1) Next i Sonuc = "" For i = 0 To UBound(d) Sonuc = Sonuc & d(i) Next i Duzelt = Trim(Sonuc) End Function
şimdi karşıma bir sorun çıktı çift soyisimli olanlar (kızlık ve eş soyismini aynı anda kulnnanların yazımının düzeltilmesi.
Verile a sütununda b sütununa
AdıSoyadı Adı SOYADI
AdıİkinciadıSoyadı Adı İkinciadı SOYADI
Adıİkinciadı(Kızlıksoyadı)Soyadı Adı İkinciadı KIZLIKSOYADI SOYADI
not: hocam soyisimlerin sadece ilk harfi büyükyazolmış olduğu gibi, tamamıda büyük harfle yazılmış olabilir.
gibi yazmak mümkün mü?
bazen iki bazen bazen üç bazen de dört... ancak parantez içindeki kelime olduğu zaman son ikisi soyisim oluyor.Klasik usulü kullanmak gerek, el ve göz nuruyla
Sadece varsayım olur eğer 4 ayrı sözcük varsa bunun son ikisi soyaddır demek.