• DİKKAT

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

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

Katılım
24 Temmuz 2019
Mesajlar
484
Excel Vers. ve Dili
EXCEL 2010 TÜRKÇE
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

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
 
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

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.
 
Kıymetli Ustalarım hepinize ayrı ayrı teşekkür ederim. Sağlık ve esenlik diliyorum.
 
@Ö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?
 
.

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.

.
 
.

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.
 
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.
 
Geri
Üst