Ad Soyad ayırmada çift ad veya çift soyad sorunu

Katılım
24 Temmuz 2019
Mesajlar
413
Excel Vers. ve Dili
EXCEL 2010 TÜRKÇE
Altın Üyelik Bitiş Tarihi
25-12-2023
Merhaba
Ad soyadları ayırırken isimler ve soy isimler her zaman aynı sayıda değildir.

1 AD 1 SOYAD

2 AD 1 SOYAD

1 AD 2 SOYAD

2 AD 2 SOYAD


Olan isimler var. Bunları ayırmayı mümkün kılan kod var mıdır?
 

Ekli dosyalar

ÖmerFaruk

Destek Ekibi
Destek Ekibi
Katılım
22 Ekim 2017
Mesajlar
4,779
Excel Vers. ve Dili
Microsoft 365 Tr-64
Ad ya da Soyad için sayı sınırı yoktur.
Adlar; ilk harf büyük diğerleri küçük
Soyadlar; tüm harfleri büyük ise ayrışacaktır.
C++:
Sub AdSoyad()
    Dim Veri
    Dim ArrAd(), ArrSoyad()
    Veri = Range("A2:A" & Range("A" & Rows.Count).End(3).Row).Value
    ReDim Liste(1 To UBound(Veri), 1 To 2)
    For i = 1 To UBound(Veri)
        Kelimeler = Split(Trim(Veri(i, 1)), " ")
        adsay = 0: soyadsay = 0
        For k = 0 To UBound(Kelimeler)
            Bak = Kelimeler(k)
            Bak = Replace(Replace(Replace(Replace(Replace(Replace(Bak, "Ç", "C"), "İ", "I"), "Ğ", "G"), "Ö", "O"), "Ş", "S"), "Ü", "U")
            Bak = Replace(Replace(Replace(Replace(Replace(Replace(Bak, "ç", "c"), "ğ", "g"), "ı", "i"), "ö", "o"), "ş", "s"), "ü", "u")
            If Left(Bak, 2) Like "[A-Z][a-z]" Then
                adsay = adsay + 1
                ReDim Preserve ArrAd(1 To adsay)
                ArrAd(adsay) = Kelimeler(k)
            Else
                soyadsay = soyadsay + 1
                ReDim Preserve ArrSoyad(1 To soyadsay)
                ArrSoyad(soyadsay) = Kelimeler(k)
            End If
        Next k
        Liste(i, 1) = Join(ArrAd, " ")
        Liste(i, 2) = Join(ArrSoyad, " ")
    Next i
    Range("B2").Resize(UBound(Liste), 2) = Liste
End Sub
 

Merhum İdris SERDAR

Moderatör
Yönetici
Katılım
21 Ekim 2005
Mesajlar
17,094
Excel Vers. ve Dili
Excel, 365 - İngilizce
Alternatif:

Küçük harf Adlar için:

Kod:
Function KHKSay(dym As String) As Integer

    Dim pdizi() As String
    pdizi = Split(dym, " ")
    Dim I As Integer
    Dim Say As Integer
    Dim klm As String
    Say = 0
    
    For I = LBound(pdizi) To UBound(pdizi)
        klm = pdizi(I)
        If klm <> UCase(klm) And Len(klm) >= 2 Then
            Say = Say + 1
        End If
    Next
    
    KHKSay = Say
    
End Function

Büyük harf soy adlar için:

Kod:
Function BHKSay(dym As String) As Integer

    Dim pdizi() As String
    pdizi = Split(dym, " ")
    Dim I As Integer
    Dim Say As Integer
    Dim klm As String
    Say = 0
    
    For I = LBound(pdizi) To UBound(pdizi)
        klm = pdizi(I)
        If klm = UCase(klm) And Len(klm) >= 2 Then
            Say = Say + 1
        End If
    Next
    
    BHKSay = Say
    
End Function
Örnek dosya ekte.

.
 

Ekli dosyalar

Greenblacksea53

Altın Üye
Katılım
5 Ocak 2019
Mesajlar
572
Excel Vers. ve Dili
Ofis 365 Tr
Altın Üyelik Bitiş Tarihi
05-01-2025
C++:
İsimleri Ayırmak İçin: =EĞER(UZUNLUK(B2)-UZUNLUK(YERİNEKOY(B2;" ";""))=1;SOLDAN(B2;BUL(" ";B2));EĞER(UZUNLUK(B2)-UZUNLUK(YERİNEKOY(B2;" ";""))=2;SOLDAN(B2;BUL(" ";B2;BUL(" ";B2)+1));EĞER(UZUNLUK(B2)-UZUNLUK(YERİNEKOY(B2;" ";""))=3;SOLDAN(B2;BUL(" ";B2;BUL(" ";B2)+10)))))
Soyadları Ayırmak İçin:=EĞER(UZUNLUK(B3)-UZUNLUK(YERİNEKOY(B3;" ";""))=1;SAĞDAN(B3;UZUNLUK(B3)-BUL(" ";B3));EĞER(UZUNLUK(B3)-UZUNLUK(YERİNEKOY(B3;" ";""))=2;SAĞDAN(B3;UZUNLUK(B3)-BUL(" ";B3;BUL(" ";B3)+1));SAĞDAN(B3;UZUNLUK(B3)-BUL(" ";B3;BUL(" ";B3)+10))))
Alternatif olarak

İsimler B sütununda olsun Excel fonksiyonları ile yaptım, ayrıca isim 3 tane olabilir sorun değil hatta 4 bile olabilir.
 
Katılım
24 Temmuz 2019
Mesajlar
413
Excel Vers. ve Dili
EXCEL 2010 TÜRKÇE
Altın Üyelik Bitiş Tarihi
25-12-2023
Kıymetli Ustalarım hepinize ayrı ayrı teşekkür ederim. Sağlık ve esenlik diliyorum.
 
Katılım
24 Temmuz 2019
Mesajlar
413
Excel Vers. ve Dili
EXCEL 2010 TÜRKÇE
Altın Üyelik Bitiş Tarihi
25-12-2023
@ÖmerFaruk Bey yardımınız için çok teşekkür ederim. Ek bir sorum olacak. Farklı sistemlerden isimleri indirdiğimiz zaman bazen tümü küçük harf bazen de tümü büyük harf olabiliyor. Bunun için bir kod varyasyonu geliştirilebilir mi?
 

Merhum İdris SERDAR

Moderatör
Yönetici
Katılım
21 Ekim 2005
Mesajlar
17,094
Excel Vers. ve Dili
Excel, 365 - İngilizce
.

Tüm soyadların ister büyük ister küçük bir listesi varsa kolay bir şekilde olur. Aksi takdirde, Excel sözcük veya sözcüklerin hangisi soyadı olduklarını bilmez. Excel'e bir tanıtım anahtarı vermek gerekir.

.
 
Katılım
24 Temmuz 2019
Mesajlar
413
Excel Vers. ve Dili
EXCEL 2010 TÜRKÇE
Altın Üyelik Bitiş Tarihi
25-12-2023
.

Tüm soyadların ister büyük ister küçük bir listesi varsa kolay bir şekilde olur. Aksi takdirde, Excel sözcük veya sözcüklerin hangisi soyadı olduklarını bilmez. Excel'e bir tanıtım anahtarı vermek gerekir.

.
Evet İdris Hocam çok haklısınız. Excel böyle bir şey farkındayım ama acaba böyle bir "anahtar" verilebilir mi diye düşündüm.
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,245
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Merhaba,

İlk mesajınızda verdiğiniz örneklerde;

2 AD 1 SOYAD
1 AD 2 SOYAD


Gördüğünüz gibi bu iki seçenekte 3 kelimeden oluşuyor.

Eğer bu isimlerde büyük harf gibi bir ayırıcı bir kriter olmazsa burada excelin kafası karışır. Bu sebeple işin bir sistemi (anahtarı) olmalıdır.
 
Üst