• DİKKAT

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

Çözüldü Hücre İçindeki Ad Soyad'dan Soyadı Büyük Harf Yazma Sorunu hakkında.

Katılım
2 Aralık 2013
Mesajlar
401
Excel Vers. ve Dili
Microsoft Office Standard 2013-Türkçe
Merhaba Arkadaşlar,

Excel dosyasında aşağıdaki formülü kullanıyorum. İhtiyacım olan ise hücre içine Ad Soyad yazarken formülün çalışması.

Örnek:
Ahmet TEZCAN
Mehmet Yusuf BİRCAN

=YAZIM.DÜZENİ(SOLDAN(D2;BUL("*";YERİNEKOY(D2;" ";"*";UZUNLUK(D2)-UZUNLUK(YERİNEKOY(D2;" ";""))))-1))&" "&BÜYÜKHARF(SAĞDAN(D2;UZUNLUK(D2)-BUL("*";YERİNEKOY(D2;" ";"*";UZUNLUK(D2)-UZUNLUK(YERİNEKOY(D2;" ";""))))))
 
EĞERHATA(BÜYÜKHARF(KIRP(EĞERHATA(ORTAB(KIRP(ORTAB(KIRP(D2);MBUL(" ";D2);25));EĞERHATA(MBUL(" ";KIRP(ORTAB(KIRP(D2);MBUL(" ";D2);25)));"");25);KIRP(ORTAB(KIRP(D2);MBUL(" ";D2);25)))));"")
 
Arkadaşlar,

Bir yanlış anlaşılma olduğunu düşünüyorum. İlk mesajımda yazılı olan formül başarılı olarak çalışıyor. İhtiyacım olan Hücre içine Ad Soyad yazdıktan sonra, diğer hücreye geçtiğimde formülün çalışması. Sanırım bu formül ile değil macro ile mümkün.
 
Merhaba.
Dosyanıa yeni bir modüle ekleyin.
Eklediğiniz modüle aşağıdaki kodları kopyalayın.

Kod:
Public Function SoyadBüyük(AdıSoyadı As String) As String
    Application.EnableEvents = False
    Dim bak As Long
    Dim Soyad As String
    For bak = 1 To Len(AdıSoyadı)
        If Right(Left(AdıSoyadı, bak), 1) = " " Then
            Soyad = Right(AdıSoyadı, Len(AdıSoyadı) - bak)
        End If
    Next
    SoyadBüyük = Replace(AdıSoyadı, Soyad, UCase(Soyad))
    Application.EnableEvents = True
End Function

Excel sayfanızdan aşağıdaki şekilde formül şeklinde kullanabilirsiniz.

=SoyadBüyük(A1)
yada
=SoyadBüyük("Ahmet Kalkavan")
 
Merhaba.
Dosyanıa yeni bir modüle ekleyin.
Eklediğiniz modüle aşağıdaki kodları kopyalayın.

Kod:
Public Function SoyadBüyük(AdıSoyadı As String) As String
    Application.EnableEvents = False
    Dim bak As Long
    Dim Soyad As String
    For bak = 1 To Len(AdıSoyadı)
        If Right(Left(AdıSoyadı, bak), 1) = " " Then
            Soyad = Right(AdıSoyadı, Len(AdıSoyadı) - bak)
        End If
    Next
    SoyadBüyük = Replace(AdıSoyadı, Soyad, UCase(Soyad))
    Application.EnableEvents = True
End Function

Excel sayfanızdan aşağıdaki şekilde formül şeklinde kullanabilirsiniz.

=SoyadBüyük(A1)
yada
=SoyadBüyük("Ahmet Kalkavan")


Sayın @dalgalikur

Sanırım kodu doğru yere ekleyemedim. Örnek dosyaya göz atar mısınız.
 

Ekli dosyalar

Doğru yere kopyalamışsınız.

Herhangi bir hücrede yukarıda da belirttiğim şekillerden biri ile kullanabilirsiniz..

=SoyadBüyük(A1)
yada
=SoyadBüyük("Ahmet Kalkavan")
 
Merhaba,

Aşağıdaki kodları ilgili sayfanın kod bölümüne kopyalayıp deneyiniz.
Soyadı büyük harfe çevirdiği gibi ek olarak koyu ve renk de verdirebilirsiniz.
Kod:
Private Sub Worksheet_Change(ByVal Target As Range)

    On Error GoTo Son
    If Intersect(Target, [D:D]) Is Nothing Or Target.Row < 2 Or Target.Value = "" Then Exit Sub
   
    Dim Ad As String, Soyad As String
    Dim Dizi() As String
    Dim i As Integer
   
    Dizi = Split(Target.Value, " ")
    For i = 0 To UBound(Dizi) - 1
        Ad = Trim(Ad & " " & Dizi(i))
    Next i
   
    Soyad = Trim(Dizi(UBound(Dizi)))
    Ad = Application.WorksheetFunction.Proper(Ad)
    Soyad = Evaluate("=UPPER(""" & Soyad & """)")
    Application.EnableEvents = False
    Target.Offset(0, 0) = Ad & " " & Soyad
   
    'Aşağıdaki Satır Soyadı Koyu Yapar
    Target.Offset(0, 0).Characters(Len(Ad) + 1, Len(Soyad) + 1).Font.Bold = True
    'Aşağıdaki Satır Verilen Rakama Göre Renklendirir
    Target.Offset(0, 0).Characters(Len(Ad) + 1, Len(Soyad) + 1).Font.ColorIndex = 3
   
    Application.EnableEvents = True
   
Son:
End Sub
 
Son düzenleme:
Merhaba,

Aşağıdaki kodları ilgili sayfanın kod bölümüne kopyalayıp deneyiniz.
Soyadı büyük harfi çevirdiği gibi ek olarak koyu ve renk de verdirebilirsiniz.
Kod:
Private Sub Worksheet_Change(ByVal Target As Range)

    On Error GoTo Son
    If Intersect(Target, [D:D]) Is Nothing Or Target.Row < 2 Or Target.Value = "" Then Exit Sub
   
    Dim Ad As String, Soyad As String
    Dim Dizi() As String
    Dim i As Integer
   
    Dizi = Split(Target.Value, " ")
    For i = 0 To UBound(Dizi) - 1
        Ad = Trim(Ad & " " & Dizi(i))
    Next i
   
    Soyad = Trim(Dizi(UBound(Dizi)))
    Ad = Application.WorksheetFunction.Proper(Ad)
    Soyad = Evaluate("=UPPER(""" & Soyad & """)")
    Application.EnableEvents = False
    Target.Offset(0, 0) = Ad & " " & Soyad
   
    'Aşağıdaki Satır Soyadı Koyu Yapar
    Target.Offset(0, 0).Characters(Len(Ad) + 1, Len(Soyad) + 1).Font.Bold = True
    'Aşağıdaki Satır Verilen Rakama Göre Renklendirir
    Target.Offset(0, 0).Characters(Len(Ad) + 1, Len(Soyad) + 1).Font.ColorIndex = 3
   
    Application.EnableEvents = True
   
Son:
End Sub


Sayın @Necdet

Paylaşmış olduğunuz koda "F" sütununu dahil edebilir miyiz.
 
Doğru yere kopyalamışsınız.

Herhangi bir hücrede yukarıda da belirttiğim şekillerden biri ile kullanabilirsiniz..

=SoyadBüyük(A1)
yada
=SoyadBüyük("Ahmet Kalkavan")

Sayın @dalgalikur

Paylaşmış olduğunuz çözüm öneriniz deki kodu dosya içinde çalıştıramadım bu nedenle örnek dosya ekledim.
 
Sayın @Necdet

Çözüm öneriniz olması gerektiği gibi çalışıyor. Zaman ayırdığınız için teşekkür ederim.

Sayın @dalgalikur

Çözüm önerinizi tam olarak anlayamadığım için (excel dosyalarında tam olarak macroların çalışmasını ve / veya çalıştırılmasını kavrayamadığım için) çalıştıramadım. Size de çok teşekkür ederim zaman ayırdığınız için.

Yardımları
 
Geri
Üst