• DİKKAT

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

Ad Soyad Ayırma

  • Konbuyu başlatan Konbuyu başlatan Ridan
  • Başlangıç tarihi Başlangıç tarihi
Katılım
3 Temmuz 2005
Mesajlar
306
Excel Vers. ve Dili
excel 2021 tr
Merhaba,

Aşağıdaki kod ile ad soyad ayrımı yapılıyor. Fakat, belli bir sütun adresi (A) verilmiş.

İstediğim, imlecin bulunduğu aktif sütundaki hücreden itibaren olabilir veya sütundaki isimler aralığı seçilmiş olabilir.. ad soyadları hemen sağındaki sütunlara aktarması..

Kod:
Sub ayir()

sat = 2
sut = "a"
For r = 2 To Cells(Rows.Count, sut).End(3).Row
deg1 = Split(WorksheetFunction.Trim(Cells(r, sut).Value), " ")
deg2 = Split(WorksheetFunction.Trim(Cells(r, sut).Value), ")")
deg3 = Split(WorksheetFunction.Trim(Cells(r, sut).Value), "(")
son = ""
say1 = ""
say2 = ""
son = UBound(deg1)

If son = 0 Then
say1 = deg1(0)

ElseIf son = 1 Then
say1 = deg1(0)
say2 = deg1(1)
ElseIf son = 2 Then

If UBound(deg2) > 0 Or UBound(deg3) > 0 Then
say1 = deg1(0)
say2 = deg1(1) & " " & deg1(2)
Else
say1 = deg1(0) & " " & deg1(1)
say2 = deg1(2)
End If
ElseIf son = 3 Then
say1 = deg1(0) & " " & deg1(1)
say2 = deg1(2) & " " & deg1(3)

ElseIf son > 3 Then
say1 = "İkiden fazla isim var"
say2 = "İkiden fazla soy isim var"
End If

Cells(sat, "b").Value = say1
Cells(sat, "c").Value = say2
sat = sat + 1
Next

End Sub
 
3. Satırdaki kodu aşağıdaki kodla değiştirin, isimlerin bulunduğu tüm sütunu seçip kodu çalıştırın
Kod:
sut = Replace(Split(Selection.Address, ":")(0), "$", "")
 
Yazdğınız gibi imlecinizi ad soyadların bulunduğu sütunda aktif hale getirdikten sonra kodu çalıştırabilirsiniz. (bitişik durumdaki ad soyadların, aktif olan sütunda olduğu farzedilmektedir.)
Kod:
Sub ayir()
sat = 2
sut = ActiveCell.Column
For r = 2 To Cells(Rows.Count, sut).End(3).Row
deg1 = Split(WorksheetFunction.Trim(Cells(r, sut).Value), " ")
deg2 = Split(WorksheetFunction.Trim(Cells(r, sut).Value), ")")
deg3 = Split(WorksheetFunction.Trim(Cells(r, sut).Value), "(")
son = ""
say1 = ""
say2 = ""
son = UBound(deg1)

If son = 0 Then
say1 = deg1(0)

ElseIf son = 1 Then
say1 = deg1(0)
say2 = deg1(1)
ElseIf son = 2 Then

If UBound(deg2) > 0 Or UBound(deg3) > 0 Then
say1 = deg1(0)
say2 = deg1(1) & " " & deg1(2)
Else
say1 = deg1(0) & " " & deg1(1)
say2 = deg1(2)
End If
ElseIf son = 3 Then
say1 = deg1(0) & " " & deg1(1)
say2 = deg1(2) & " " & deg1(3)

ElseIf son > 3 Then
say1 = "İkiden fazla isim var"
say2 = "İkiden fazla soy isim var"
End If

Cells(sat, sut + 1).Value = say1
Cells(sat, sut + 2).Value = say2
sat = sat + 1
Next

End Sub
 
. . .

Ayırdığı ad soyadı yine B - C sütunlarına mı yazacak yoksa
aktif sütunun sağına mı yazacak.

. . .
 
. . .

Alternatif olması için,

Kod:
Sub ayir()
sat = 2
[COLOR="DarkRed"]sut = Split(Selection.Address, "$")(1)[/COLOR]
For r = 2 To Cells(Rows.Count, sut).End(3).Row
deg1 = Split(WorksheetFunction.Trim(Cells(r, sut).Value), " ")
deg2 = Split(WorksheetFunction.Trim(Cells(r, sut).Value), ")")
deg3 = Split(WorksheetFunction.Trim(Cells(r, sut).Value), "(")
son = ""
say1 = ""
say2 = ""
son = UBound(deg1)

If son = 0 Then
say1 = deg1(0)

ElseIf son = 1 Then
say1 = deg1(0)
say2 = deg1(1)
ElseIf son = 2 Then

If UBound(deg2) > 0 Or UBound(deg3) > 0 Then
say1 = deg1(0)
say2 = deg1(1) & " " & deg1(2)
Else
say1 = deg1(0) & " " & deg1(1)
say2 = deg1(2)
End If
ElseIf son = 3 Then
say1 = deg1(0) & " " & deg1(1)
say2 = deg1(2) & " " & deg1(3)

ElseIf son > 3 Then
say1 = "İkiden fazla isim var"
say2 = "İkiden fazla soy isim var"
End If

[COLOR="DarkRed"]Cells(sat, sut).Offset(0, 1) = say1
Cells(sat, sut).Offset(0, 2) = say2[/COLOR]
sat = sat + 1
Next

End Sub

. . .
 
Çok teşekkürler antonio ve Hüseyin bey... istediğim gibi oldu.
 
Geri
Üst