İki ktf yi birleştirme ben beceremedim

Katılım
2 Mart 2005
Mesajlar
2,960
Excel Vers. ve Dili
ev: Ofis 2007- Win Xp
iş: Ofis 2010- Win Vista
Kod:
Function NTC_Düzeni(ByVal metin As String)
On Error Resume Next
    'metin = ""
    ilkharf = ""
    dgrharf = ""
'
        metin = LCaseTr(metin)
        ilkharf = UCaseTr(Left(metin, 1))
        dgrharf = Right(metin, (Len(metin) - 1))
        NTC_Düzeni = ilkharf & dgrharf
'    Next
End Function
Kod:
Function NTC2(ByVal metin As String)
On Error Resume Next
    'metin = "Hüseyin okula gitti. dersi yokmuş geri geldi."
    ilkharf = "":    dgrharf = "":    cumle = "":      SCumle = "":
    metin = Replace(metin, ". ", ".")
    a = Split(metin, ".")
        For j = UBound(a) To 0 Step -1
            cumle = [B]NTC_Düzeni(a(j))[/B]
            snc = cumle & ". " & snc
        Next j
    NTC2 = snc
End Function
beceremediğim için koyu harfli yere gönderme yapıyorum nasıl birleştiririm.

ntc2 fonksiyonu, bir hücredeki aşağıdaki şekildeki cümleleri;
hüseyin okula gitti.dersi yokmuş geri geldi. yarın yine gidecek. AMA GELİRMİ BİLMEM
yazıldığı hücrede aşağıdaki şekilde
Hüseyin okula gitti. Dersi yokmuş geri geldi. Yarın yine gidecek. Ama gelirmi bilmem.
döndürür.
 

veyselemre

Özel Üye
Katılım
9 Mart 2005
Mesajlar
3,653
Excel Vers. ve Dili
Pro Plus 2021
Kod:
Function NTC(metin As String)
    metin = Replace(metin, ". ", ".")
    a = Split(metin, ".")
    For x = 0 To UBound(a)
        al = Trim(a(x))
        a(x) = WorksheetFunction.Proper(Left(al, 1)) & Evaluate("=lower(" & Chr(34) & Right(al, Len(al) - 1) & Chr(34) & ")")
    Next x
    NTC = Join(a, ". ") & "."
End Function
 
Katılım
2 Mart 2005
Mesajlar
2,960
Excel Vers. ve Dili
ev: Ofis 2007- Win Xp
iş: Ofis 2010- Win Vista
hocam ilginize teşekkür ederim, "." dan sonra güzel işliyor. ancak paragraf sonunda "." varsa dğer hatası veriyor bunun için hücredeki son işaret "." ise boşluğa çevirmek lazım. ben bir deneyeyim olmazsa bu konuda da yardımınızı istiyorum, Ayrıca
!, ? işaretinden sonraki durumlarda da büyük harfle başlatmak mümkün olur mu?

yani aynı paragrafta diyelim .,?,! varsada bu işaretlerden sonra gelenler büyük harfle başlasın
 
Son düzenleme:

veyselemre

Özel Üye
Katılım
9 Mart 2005
Mesajlar
3,653
Excel Vers. ve Dili
Pro Plus 2021
Kod:
Function NTC(metin As String)

Dim oMatches As Object, i As Integer, al As String, hepsi As String

    With CreateObject("vbscript.regexp")
        .Pattern = "\.|\?|\!"
        .Global = True
        bas = 1
        Set oMatches = .Execute(metin)
        For i = 0 To oMatches.Count - 1
            uz = oMatches(i).firstindex + 2 - bas
            al = Trim(Mid(metin, bas, uz))
            bas = oMatches(i).firstindex + 2
            hepsi = hepsi & WorksheetFunction.Proper(Left(al, 1)) & Evaluate("=lower(" & Chr(34) & Right(al, Len(al) - 1) & Chr(34) & ")") & " "
        Next i
    End With

    NTC = Trim(hepsi)

End Function

Sub dene()
    MsgBox NTC("hüseyin okula gitti.dersi yokmuş geri geldi. yarın yine gidecek. Keşke gitseydi!AMA GELİRMİ BİLMEM?")
End Sub
 
Katılım
2 Mart 2005
Mesajlar
2,960
Excel Vers. ve Dili
ev: Ofis 2007- Win Xp
iş: Ofis 2010- Win Vista
Hocam ilginize çok teşekkür ederim

Kod:
MsgBox NTC("hüseyin okula gitti.dersi yokmuş geri geldi. yarın yine gidecek. Keşke gitseydi!AMA GELİRMİ BİLMEM")
[code]

şeklinde olunca [B]AMA GELİRMİ BİLMEM[/B] cümleyi yutuyor.....
En son Cümlenin sonunda noktalama işareti yoksa "." koysun ondan sonra işlemi yapsın mümkün mü?
 

veyselemre

Özel Üye
Katılım
9 Mart 2005
Mesajlar
3,653
Excel Vers. ve Dili
Pro Plus 2021
Böyle deneyin.
Kod:
Function NTC(metin As String)
    metin = Trim(metin)
    sonkar = Right(metin, 1)
    If Not (sonkar = "." Or sonkar = "?" Or sonkar = "!") Then metin = metin & "."

    Dim oMatches As Object, i As Integer, al As String, hepsi As String

    With CreateObject("vbscript.regexp")
        .Pattern = "\.|\?|\!"
        .Global = True
        bas = 1
        Set oMatches = .Execute(metin)
        For i = 0 To oMatches.Count - 1
            uz = oMatches(i).firstindex + 2 - bas
            al = Trim(Mid(metin, bas, uz))
            bas = oMatches(i).firstindex + 2
            hepsi = hepsi & WorksheetFunction.Proper(Left(al, 1)) & Evaluate("=lower(" & Chr(34) & Right(al, Len(al) - 1) & Chr(34) & ")") & " "
        Next i
    End With

    NTC = Trim(hepsi)

End Function

Sub dene()
    MsgBox NTC("hüseyin okula gitti.dersi yokmuş geri geldi. yarın yine gidecek. Keşke gitseydi!AMA GELİRMİ BİLMEM? gelmez")
End Sub
 
Katılım
2 Mart 2005
Mesajlar
2,960
Excel Vers. ve Dili
ev: Ofis 2007- Win Xp
iş: Ofis 2010- Win Vista
elinize sağlık, saygılarımla.
 
Üst