Sağdan PARÇAAL ile Kelime ayırma

Katılım
11 Mayıs 2016
Mesajlar
34
Excel Vers. ve Dili
Türkçe
Selamlar kolay gelsin, elimde uzun bir isim listesi var ve bunların soyisimlerini ayırmam gerekiyor.
Metni sütuna dönüştür diyerek işimizi hallediyoruz ama 3 ve 4 isim olunca sütun sayısı da artıyor. Liste de çok uzun olunca bazı sütunları birleştir vb ek bir zahmete girmek zorundayım.

PARÇAAL formülü bu işe daha uygun ama tutarlı bir formül tutturamadım.

Aşağıdaki gibi devam eden uzun bir isim listem var ve ben sağdan ilk boşluktan sonra soyismi alıp B sütununa ayırmasını istiyorum. Sol tarafta soyisim kalmayacak tabi. Özellikle bu işlemi PARÇAAL formülü ile çözüp yardımcı olursanız sevinirim. Macro'da olur elbette. Kolay gelsin

 
Son düzenleme:
Katılım
6 Mart 2005
Mesajlar
6,233
Excel Vers. ve Dili
Excel Vers. ve Dili:
Office 2016 TR 64 Bit
Altın Üyelik Bitiş Tarihi
22/12/2022
Bu şekilde deneyiniz. A2 hücresinden başladığı düşünülmüştür.
Kod:
=SAĞDAN(A2;MBUL(" ";A2)-1)
 
Katılım
6 Mart 2005
Mesajlar
6,233
Excel Vers. ve Dili
Excel Vers. ve Dili:
Office 2016 TR 64 Bit
Altın Üyelik Bitiş Tarihi
22/12/2022
Afedersiniz. Eksik yazılmış
Kod:
=SAĞDAN(A2;UZUNLUK(A2)-MBUL(" ";A2;1))
 
Katılım
6 Mart 2005
Mesajlar
6,233
Excel Vers. ve Dili
Excel Vers. ve Dili:
Office 2016 TR 64 Bit
Altın Üyelik Bitiş Tarihi
22/12/2022
Birden fazla İsim ve soy isimler için kullanabilirsin.Soy isimleri alır.
Kod:
=EĞER(UZUNLUK(KIRP(A2))-UZUNLUK(YERİNEKOY(A2;" ";""))=1;SAĞDAN(A2;UZUNLUK(A2)-MBUL(" ";A2;1));EĞER(UZUNLUK(KIRP(A2))-UZUNLUK(YERİNEKOY(A2;" ";""))=2;SAĞDAN(A2;UZUNLUK(A2)-MBUL(" ";A2;MBUL(" ";A2)+1));EĞER(UZUNLUK(KIRP(A2))-UZUNLUK(YERİNEKOY(A2;" ";""))=3;SAĞDAN(A2;UZUNLUK(A2)-MBUL(" ";A2;MBUL(" ";A2;MBUL(" ";A2;1)+1)+1));"")))
 
Son düzenleme:
Katılım
11 Mayıs 2016
Mesajlar
34
Excel Vers. ve Dili
Türkçe
Evet oldu ancak 4 kelimeden uzun olanların karşısına YANLIŞ ibaresi geldi.

bazı isimlerin başında ünvanlar da olunca 5-6 hatta 7 kelime oluyorlar

örneğin:
ziraat mühendisi ali veli selami
gibi
 
Son düzenleme:
Katılım
6 Mart 2005
Mesajlar
6,233
Excel Vers. ve Dili
Excel Vers. ve Dili:
Office 2016 TR 64 Bit
Altın Üyelik Bitiş Tarihi
22/12/2022
Örneğinizde en fazla 4 kelime var. O nedenle yardımcı olmayı düşündüm.Sizin sorununuz makro ile veya özel çözümler ile çözülür. Kolay gelsin.
 
Katılım
11 Mayıs 2016
Mesajlar
34
Excel Vers. ve Dili
Türkçe
Bu formül ile oluyor ise 5 kelime için yardımcı olursanız sevinirim, ilginize teşekkür ederim.
 

Ömer BARAN

Uzman
Katılım
8 Mart 2011
Mesajlar
12,997
Excel Vers. ve Dili
Office 2013 ( 32 bit ) TÜRKÇE
Altın Üyelik Bitiş Tarihi
(18.03.2020) - Uzman olduğu için tarih geçersiz oldu.
Merhaba.

Alternatif olsun. Formül A1 hücresindeki metinden en sağdaki kelimeyi alır.
.
Kod:
=[COLOR="red"]EĞER[/COLOR]([B][COLOR="Blue"]A1[/COLOR][/B]="";"";[COLOR="red"]EĞER[/COLOR]([COLOR="red"]ESAYIYSA[/COLOR]([COLOR="red"]BUL[/COLOR](" ";[COLOR="red"]KIRP[/COLOR]([B][COLOR="Blue"]A1[/COLOR][/B]);1));[COLOR="red"]PARÇAAL[/COLOR]([COLOR="red"]KIRP[/COLOR]([B][COLOR="Blue"]A1[/COLOR][/B]);[COLOR="red"]BUL[/COLOR]("|";[COLOR="red"]YERİNEKOY[/COLOR]([COLOR="red"]KIRP[/COLOR]([B][COLOR="Blue"]A1[/COLOR][/B]);" ";"|";[COLOR="red"]UZUNLUK[/COLOR]([COLOR="red"]KIRP[/COLOR]([B][COLOR="Blue"]A1[/COLOR][/B]))-[COLOR="red"]UZUNLUK[/COLOR]([COLOR="red"]YERİNEKOY[/COLOR]([COLOR="Red"]KIRP[/COLOR]([B][COLOR="Blue"]A1[/COLOR][/B]);" ";"")));1)+1;255);[B][COLOR="Blue"]A1[/COLOR][/B]))
 

Ömer

Moderatör
Yönetici
Katılım
18 Ağustos 2007
Mesajlar
22,184
Excel Vers. ve Dili
Microsoft 365 Tr
Ofis 2016 Tr
Merhaba,

Alternatif:

Kod:
=SAĞDAN(A2;UZUNLUK(A2)-BUL("*";YERİNEKOY(A2;" ";"*"
 ;UZUNLUK(A2)-UZUNLUK(YERİNEKOY(A2;" ";"")))))
.
 
Katılım
11 Mayıs 2016
Mesajlar
34
Excel Vers. ve Dili
Türkçe
Birden fazla İsim ve soy isimler için kullanabilirsin.Soy isimleri alır.
Kod:
=EĞER(UZUNLUK(KIRP(A2))-UZUNLUK(YERİNEKOY(A2;" ";""))=1;SAĞDAN(A2;UZUNLUK(A2)-MBUL(" ";A2;1));EĞER(UZUNLUK(KIRP(A2))-UZUNLUK(YERİNEKOY(A2;" ";""))=2;SAĞDAN(A2;UZUNLUK(A2)-MBUL(" ";A2;MBUL(" ";A2)+1));EĞER(UZUNLUK(KIRP(A2))-UZUNLUK(YERİNEKOY(A2;" ";""))=3;SAĞDAN(A2;UZUNLUK(A2)-MBUL(" ";A2;MBUL(" ";A2;MBUL(" ";A2;1)+1)+1));"")))
Yeni farkettim soyismi kırpamamış bu formül, soyisim yerinde kaldı
 

Ömer BARAN

Uzman
Katılım
8 Mart 2011
Mesajlar
12,997
Excel Vers. ve Dili
Office 2013 ( 32 bit ) TÜRKÇE
Altın Üyelik Bitiş Tarihi
(18.03.2020) - Uzman olduğu için tarih geçersiz oldu.
Sanırım verdiğim cevabı fark etmediniz.
Konu sayfasındaki #9 numaralı cevaba bakınız.
.
 
Katılım
11 Mayıs 2016
Mesajlar
34
Excel Vers. ve Dili
Türkçe
@Ömer BARAN ve @Ömer teşekkür ederim. Verileriniz iş gördü ancak aldığı soy isim yerinde kaldı. Aldığı yerden soyismi silebilir mi?
 

Orion1

Uzman
Uzman
Katılım
1 Mart 2005
Mesajlar
22,248
Excel Vers. ve Dili
Win7 Home Basic TR 64 Bit

Ofis-2010-TR 32 Bit
KTF yaptım.
standart bir modüleYapıştırın.
Hücrede kullanımı:
Kod:
=evrendondur(A1)
ktf:
Kod:
Function evrendondur(ByRef deg As Variant)
Dim say As Byte
deg = Range("A1").Value
deg = VBA.StrReverse(Range("A1"))
say = InStr(1, deg, " ")
deg = Left(deg, say - 1)
evrendondur = StrReverse(deg)
End Function
 

Ömer BARAN

Uzman
Katılım
8 Mart 2011
Mesajlar
12,997
Excel Vers. ve Dili
Office 2013 ( 32 bit ) TÜRKÇE
Altın Üyelik Bitiş Tarihi
(18.03.2020) - Uzman olduğu için tarih geçersiz oldu.
Merhaba.

Bir hücredeki metinsel verinin bir parçasını başka hücreye formül ile aktarabilirsiniz ancak; bu metnin bir parçasını silemezsiniz.
Bunun için makro kullanmak gerekir.

Aşağıdaki şekilde işlem yaparak makro ile çözüme ulaşabilirsiniz.

-- Alt taraftan işlem yapılacak sayfanın adına fareyle sağ tıklayıp KOD GÖRÜNTÜLEyi seçin,
-- Açılan VBA ekranının sağ tarafındaki boş alana aşağıdaki kod'u yapıştırın,
-- Sayfaya bir adet düğme/metin kutusu/şekil ekleyin,
-- Sayfaya eklediğiniz bu düğme/metin kutusu/şekile fareyle sağ tıklayıp MAKRO ATAyı seçin,
-- Açılacak küçük ekranda Sub SON_KELİME()'yi seçerek işlemi onaylayın,
-- Bu düğme/metin kutusu/şekile fareyle tıklayarak kod'un çalışmasını sağlayın.
.
Kod:
[B]Sub SON_KELİME()[/B]
For sat = 1 To Cells(Rows.Count, "A").End(3).Row
    Set brnn = Cells(sat, "A").Find(" ", , , xlPart)
    If Not brnn Is Nothing Then
        brn = WorksheetFunction.Search(" ", VBA.StrReverse(brnn), 1)
        cc = Len(Cells(sat, "A")) - brn
        
        Cells(sat, "B") = Mid(Cells(sat, "A"), Len(Cells(sat, "A")) - brn + 2, brn)
        Cells(sat, "A") = Mid(Cells(sat, "A"), 1, Len(Cells(sat, "A")) - brn)
    Else
        Cells(sat, "B") = Cells(sat, "A"): Cells(sat, "A") = ""
    End If
Next: brnn = Empty
MsgBox "İşlem tamamlandı.", vbInformation, "...::... Ö. BARAN ...::..."
[B]End Sub[/B]
 

vardar07

Destek Ekibi
Destek Ekibi
Katılım
19 Mart 2008
Mesajlar
2,154
Excel Vers. ve Dili
Office 2007 Enterprise
Türkçe
Aşağıdaki gibi devam eden uzun bir isim listem var ve ben sağdan ilk boşluktan sonra soyismi alıp B sütununa ayırmasını istiyorum. Sol tarafta soyisim kalmayacak tabi. Özellikle bu işlemi PARÇAAL formülü ile çözüp yardımcı olursanız sevinirim. Macro'da olur elbette. Kolay gelsin
Arkadaş A sütununda isimler kalsın B sütununa soy ismi ayırsın istiyor. Buda ancak makro ile olacak sanırım.

Kod:
Sub ayir()
Set k = Sheets("Sayfa2")
sat = 2
For a = 2 To k.Range("A65500").End(3).Row
    ad = Split(k.Cells(a, "A"), " ")
    ReDim ad1(UBound(ad) - 1)
    For b = LBound(ad) To UBound(ad) - 1
        ad1(b) = ad(b)
    Next
    k.Cells(sat, "A") = Join(ad1, " ")
    k.Cells(sat, "B") = ad(UBound(ad))
    sat = sat + 1
Next
End Sub
 
Katılım
11 Mayıs 2016
Mesajlar
34
Excel Vers. ve Dili
Türkçe
Merhaba.

Bir hücredeki metinsel verinin bir parçasını başka hücreye formül ile aktarabilirsiniz ancak; bu metnin bir parçasını silemezsiniz.
Bunun için makro kullanmak gerekir.

Aşağıdaki şekilde işlem yaparak makro ile çözüme ulaşabilirsiniz.

-- Alt taraftan işlem yapılacak sayfanın adına fareyle sağ tıklayıp KOD GÖRÜNTÜLEyi seçin,
-- Açılan VBA ekranının sağ tarafındaki boş alana aşağıdaki kod'u yapıştırın,
-- Sayfaya bir adet düğme/metin kutusu/şekil ekleyin,
-- Sayfaya eklediğiniz bu düğme/metin kutusu/şekile fareyle sağ tıklayıp MAKRO ATAyı seçin,
-- Açılacak küçük ekranda Sub SON_KELİME()'yi seçerek işlemi onaylayın,
-- Bu düğme/metin kutusu/şekile fareyle tıklayarak kod'un çalışmasını sağlayın.
.
Kod:
[B]Sub SON_KELİME()[/B]
For sat = 1 To Cells(Rows.Count, "A").End(3).Row
    Set brnn = Cells(sat, "A").Find(" ", , , xlPart)
    If Not brnn Is Nothing Then
        brn = WorksheetFunction.Search(" ", VBA.StrReverse(brnn), 1)
        Cells(sat, 2) = Left(VBA.StrReverse(Cells(sat, "A")), brn - 1)
        Cells(sat, "A") = Left(Cells(sat, "A"), Len(Cells(sat, "A")) - brn)
    Else
        Cells(sat, "B") = Cells(sat, "A"): Cells(sat, "A") = ""
    End If
Next: brnn = Empty
MsgBox "İşlem tamamlandı.", vbInformation, "...::... Ö. BARAN ...::..."
[B]End Sub[/B]
İstediğim sonucu verdi ama soyisimleri tersten geriye doğru yazdı :)

ali can ise ali nac şeklinde ayırdı
 
Katılım
11 Mayıs 2016
Mesajlar
34
Excel Vers. ve Dili
Türkçe
Arkadaş A sütununda isimler kalsın B sütununa soy ismi ayırsın istiyor. Buda ancak makro ile olacak sanırım.

Kod:
Sub ayir()
Set k = Sheets("Sayfa2")
sat = 2
For a = 2 To k.Range("A65500").End(3).Row
    ad = Split(k.Cells(a, "A"), " ")
    ReDim ad1(UBound(ad) - 1)
    For b = LBound(ad) To UBound(ad) - 1
        ad1(b) = ad(b)
    Next
    k.Cells(sat, "A") = Join(ad1, " ")
    k.Cells(sat, "B") = ad(UBound(ad))
    sat = sat + 1
Next
End Sub
Runtime error 9 hatası aldım
 
Katılım
11 Mayıs 2016
Mesajlar
34
Excel Vers. ve Dili
Türkçe
Alternatif; excel sağ tuş menü eklentisi ile

aşağıdaki linkten detaylı bilgi alabilirsiniz. ALdığını silmek için "bulunan kes" i işaretleyin.

Bu eklentiyi tüm excel dosyalarınızda çalıştırabilir siniz.

http://www.excel.web.tr/f52/excel-zel-lemler-menusu-eklentisi-sao-tu-t157219.html


Kardeşim eline emeğine sağlık, harika çalışmaların var. Tam istediğim gibi oldu, teşekkür ederim.
________________

Yardımcı olan diğer arkadaşlara da çok teşekkür ederim. Geribildirim yaptığı üstteki iki makro üzerinde düzenleme olursa onları da deneyip tekrar geri bildirim yapacağım. Ellerinize sağlık
 
Son düzenleme:
Üst