• Foruma hoş geldin 👋 Ziyaretçi

    Forum içeriğine ve tüm hizmetlerimize erişim sağlamak için foruma kayıt olmalı ya da giriş yapmalısınız. Foruma üye olmak tamamen ücretsizdir.

Çözüldü Ad Soyad Ayırma

Bu konu çözüldü olarak işaretlenmiştir. Çözülmediğini düşünüyorsanız konuyu rapor edebilirsiniz.
Durum
Konu Çözümlendiği İçin Kapatılmıştır.

Yasar PİSKİN

Yeni Üye
Katılım
18 Nis 2021
Mesajlar
460
Çözümler
2
Aldığı beğeni
101
Excel V
Office 365 TR
C4 hücresinde ki gibi birden fazla isim ve soy isim den oluşan hücrelerde ad soyad ayırmada kullandığım formüllerin birden fazla ad ve soyadlar da "AYŞE EYLÜL DEMİR AYDIN" yeşil boyalı alanlardaki gibi olacak şekilde iyileştirilmesi hususunda yardımlarınızı bekliyorum.
 

Ekli dosyalar

Çözüm
Dosyanızı inceledim worksheet_change zaten varmış bu yüzden hata vermiş.
Alttaki kodu sayfa1 kodlarına ekleyin.

HTML:
Kod:
İçeriği görebilmek için Giriş yap ya da üye ol.
Ve Worksheet_change kodlarının ilk satırına şunu...
Koddaki AdSoyad fonsiyonunu;
1. Herhangi bir hücreye uygulayablirsiniz
İsim A1 de olsun
B1 hücresine =AdSoyad(1;A1;2) yazarsanız ismin 2. boşluktan öncesini alır
C1 hücresine =AdSoyad(2;A1;2) yazarsanız ismin 2.boşluktan sonrasını alır
2. Worksheet_SelectionChange yöntemi ya da istenen tüm hücrelere uygulanacak şekilde kodlarla da düzenlenebilir
Bundan sonrası tam olarak ne istediğine bağlı..
Umarım işinizi görür...


HTML:
Kod:
İçeriği görebilmek için Giriş yap ya da üye ol.
 
hocam bilmediğimden soruyorum
benim gönderdiğimde de sizinkinde de
adamın ismi"mehmet ali adıgüzel" gibi bir ise sıkıntı oluyor sanırım
 
hocam bilmediğimden soruyorum
benim gönderdiğimde de sizinkinde de
adamın ismi"mehmet ali adıgüzel" gibi bir ise sıkıntı oluyor sanırım
mehmet ali adıgüzel bu ismi nasıl ayırmak istiyosunuz, örneğin
1. mehmet ali
adıgüzel
2. mehmet
ali adıgüzel
belirtirmisiniz
Özellikle boşluk noktası değişken olabileceğenden kodu değişken tercihleri düşünerek düzenledim
 
Şunu da yapabiliriz...
3 boşluk varsa .boşluktan ayırsın...
4 boşluk varsa .boşluktan ayırsın...
5 boşluk varsa .boşluktan ayırsın...
şeklinde kesin tanımlama yaparsanız kodu tam isteğinize göre revize edebiliriz...
Bazen 3 kelimeden oluşan isimlerde 2 isim+1 soyad olabileceği gibi 1 isim+2 soyad olabiliyor
 
Koddaki AdSoyad fonsiyonunu;
Public Function AdSoyad(ByVal Kisim As Integer, ByVal myName As String, ByVal BoslukNo As Integer) As String

Dim i As Integer, j As Integer, Ayirim As Integer

AdSoyad = vbNullString
j = 0

myName = TumuBuyuk(myName)

For i = 1 To Len(myName)
If Mid(myName, i, 1) = " " Then j = j + 1
If j = BoslukNo Then
Ayirim = i
Exit For
End If
Next

If Ayirim > 0 Then
If Kisim = 1 Then
AdSoyad = Trim(Left(myName, (Ayirim - 1)))
ElseIf Kisim = 2 Then
AdSoyad = Trim(Mid(myName, (Ayirim + 1)))
End If
End If

End Function



Private Function TumuBuyuk(ByVal kelime As String) As String

Dim myName As Integer, i As Integer
Dim harf As String
Dim eharf As Variant

myName = Len(kelime)
If myName <> 0 Then
harf = Mid(kelime, 1, 1)
If Asc(harf) = 73 Or Asc(harf) = 253 Then
TumuBuyuk = TumuBuyuk & "I"
ElseIf Asc(harf) = 221 Or Asc(harf) = 105 Then
TumuBuyuk = TumuBuyuk & "İ"
ElseIf harf = "ç" Or harf = "Ç" Then
TumuBuyuk = TumuBuyuk & "Ç"
ElseIf harf = "ğ" Or harf = "Ğ" Then
TumuBuyuk = TumuBuyuk & "Ğ"
ElseIf harf = "ö" Or harf = "Ö" Then
TumuBuyuk = TumuBuyuk & "Ö"
ElseIf harf = "ş" Or harf = "Ş" Then
TumuBuyuk = TumuBuyuk & "Ş"
ElseIf harf = "ü" Or harf = "Ü" Then
TumuBuyuk = TumuBuyuk & "Ü"
Else
TumuBuyuk = TumuBuyuk & UCase(harf)
End If
For i = 2 To Len(kelime)
harf = Mid(kelime, i, 1)
If eharf = "." Or eharf = " " Or eharf = "-" Or eharf = "/" Then
If Asc(harf) = 73 Or Asc(harf) = 253 Then
TumuBuyuk = TumuBuyuk & "I"
ElseIf Asc(harf) = 221 Or Asc(harf) = 105 Then
TumuBuyuk = TumuBuyuk & "İ"
ElseIf harf = "ç" Or harf = "Ç" Then
TumuBuyuk = TumuBuyuk & "Ç"
ElseIf harf = "ğ" Or harf = "Ğ" Then
TumuBuyuk = TumuBuyuk & "Ğ"
ElseIf harf = "ö" Or harf = "Ö" Then
TumuBuyuk = TumuBuyuk & "Ö"
ElseIf harf = "ş" Or harf = "Ş" Then
TumuBuyuk = TumuBuyuk & "Ş"
ElseIf harf = "ü" Or harf = "Ü" Then
TumuBuyuk = TumuBuyuk & "Ü"
Else
TumuBuyuk = TumuBuyuk & UCase(harf)
End If
Else
If Asc(harf) = 73 Or Asc(harf) = 253 Then
TumuBuyuk = TumuBuyuk & "I"
ElseIf Asc(harf) = 221 Or Asc(harf) = 105 Then
TumuBuyuk = TumuBuyuk & "İ"
ElseIf harf = "ç" Or harf = "Ç" Then
TumuBuyuk = TumuBuyuk & "Ç"
ElseIf harf = "ğ" Or harf = "Ğ" Then
TumuBuyuk = TumuBuyuk & "Ğ"
ElseIf harf = "ö" Or harf = "Ö" Then
TumuBuyuk = TumuBuyuk & "Ö"
ElseIf harf = "ş" Or harf = "Ş" Then
TumuBuyuk = TumuBuyuk & "Ş"
ElseIf harf = "ü" Or harf = "Ü" Then
TumuBuyuk = TumuBuyuk & "Ü"
Else
TumuBuyuk = TumuBuyuk & UCase(harf)
End If
End If
eharf = harf
Next i
End If
End Function[/CODE]
Cevaptaki kodu EK'li listeye uyarlama hususunda yardımlarınızı rica ediyorum.
 

Ekli dosyalar

Formüllü alternatif.
Deneyiniz.
 

Ekli dosyalar

Dosyanızı inceledim worksheet_change zaten varmış bu yüzden hata vermiş.
Alttaki kodu sayfa1 kodlarına ekleyin.

HTML:
Kod:
İçeriği görebilmek için Giriş yap ya da üye ol.
Ve Worksheet_change kodlarının ilk satırına şunu yazın.HTML:
Kod:
İçeriği görebilmek için Giriş yap ya da üye ol.
 

Ekli dosyalar

Son düzenleme:
Çözüm
Son olarak örnekteki sarı boyalı alanlara toplu olarak nasıl getirebilirim. F5 yapıp kodu çalıştırdığımda gelmedi
Sayın Yasar PİSKİN 11 nolu mesajda Sayın oilgun hocamızın eklediği dosya talebinizi karşılıyor. Lütfen bt7:bu8 alanındaki verileri siliniz ardından c7 hücrede iken F2 tuşuna basınız ve sonrada enter tuşuna basınız bu işlemi c8 hücresi içinde yapınız göreceksiniz kodların çalıştığını ve daha sonra aşağıya yeni bir isim yazın onunda bt ve bu sütunlarına ayrılacağını da göreceksiniz kolay gelsin.
İyi çalışmalar.

Lütfen 11 nolu mesajdaki dosyayı kullanınız!
 
Durum
Konu Çözümlendiği İçin Kapatılmıştır.
Geri
Üst