Hücredeki Küçük Harfi Bulma

Katılım
21 Eylül 2011
Mesajlar
115
Excel Vers. ve Dili
Office 365 - İngilizce
Altın Üyelik Bitiş Tarihi
6.6.2022
Merhaba,

Hücrelerin içindeki metinde, bazılarının tümü büyük bazılarının sadece baş harfi büyük olarak yazılmış metinler var.
Metindeki büyük harfle yazılanlar makine adlarını, sadece baş harfi büyük yazılanlar arızaları gösteriyor.
Ben bu hücreden makine ve arıza çeşitlerini ayırmak istiyorum.
İlk küçük harfi bulabilsem ayıracağım ama bununla ilgili bir formül bulamadım.
"PLASTİK KUMLAMA MAKİNESİ Basınçlı Hortum Hava Kaçağı" örnek hücre içeriği bu şekilde... "PLASTİK KUMLAMA MAKİNESİ" ile "Basınçlı Hortum Hava Kaçağı" kısmını nasıl ayırabilirim?
 
Katılım
21 Eylül 2011
Mesajlar
115
Excel Vers. ve Dili
Office 365 - İngilizce
Altın Üyelik Bitiş Tarihi
6.6.2022
Kendi soruma cevap yazayım. Şöyle bir çözüm buldum. Belki yolu çok uzatmış olabilirim ama ihtiyacı olanlar faydalanabilsin diye paylaşıyorum.
Öncelikle ilk küçük harfi bulmak için Chatgpt'ye bir tane kod yazdırdım. Bu kodu kullanmak için boş hücreye =İlkKüçükHarfKonum(aranan hücre) yazıp aradığım hücredeki ilk küçük harfin kaçıncı karakter olduğunu buldum. Sonuna "-3" ekleyerek bir önceki büyük harf ve boşluktan öncesinin kaç karakter olduğunu hesapladım. Sonrası soldan formülü ile makine adını aldım.

Function İlkKüçükHarfKonum(Metin As String) As Integer
Dim i As Integer
For i = 1 To Len(Metin)
If Mid(Metin, i, 1) = LCase(Mid(Metin, i, 1)) And Mid(Metin, i, 1) Like "[a-z]" Then
İlkKüçükHarfKonum = i
Exit Function
End If
Next i
İlkKüçükHarfKonum = -1 ' Küçük harf bulunamadıysa -1 döndür
End Function

Daha sonra uzunluk formülü ile hücredeki metnin toplam uzunluğunu aldım. toplam uzunluktan, ilkküçükharfkonum formülü ile bulduğum değeri çıkardım. kalan değerden de başındaki boşluğu silmek için -1 ekledim.

Çıkan sayısal değer ile sağdan formülü ile arıza adını aldım.

Daha kolay bir yolu vardır belki ama ben bu şekilde çözdüm.
 
Katılım
20 Haziran 2018
Mesajlar
66
Excel Vers. ve Dili
2019 TR
Merhaba,

Kod:
Sub ExtractCase()
Dim i As Long
Dim upper As String
Dim lower As String
For i = 1 To 100
upper = ""
lower = ""
For j = 1 To Len(Cells(i, 1).Value)
If Asc(Mid(Cells(i, 1).Value, j, 1)) >= 65 And Asc(Mid(Cells(i, 1).Value, j, 1)) <= 90 Then
upper = upper & Mid(Cells(i, 1).Value, j, 1)
ElseIf Asc(Mid(Cells(i, 1).Value, j, 1)) >= 97 And Asc(Mid(Cells(i, 1).Value, j, 1)) <= 122 Then
lower = lower & Mid(Cells(i, 1).Value, j, 1)
Else
upper = upper & Mid(Cells(i, 1).Value, j, 1)
lower = lower & Mid(Cells(i, 1).Value, j, 1)
End If
Next j
Cells(i, 2).Value = Application.WorksheetFunction.Trim(upper)
Cells(i, 3).Value = Application.WorksheetFunction.Trim(lower)
Next i
End Sub
Deneyiniz.
 
Katılım
21 Eylül 2011
Mesajlar
115
Excel Vers. ve Dili
Office 365 - İngilizce
Altın Üyelik Bitiş Tarihi
6.6.2022
Merhaba,

Kod:
Sub ExtractCase()
Dim i As Long
Dim upper As String
Dim lower As String
For i = 1 To 100
upper = ""
lower = ""
For j = 1 To Len(Cells(i, 1).Value)
If Asc(Mid(Cells(i, 1).Value, j, 1)) >= 65 And Asc(Mid(Cells(i, 1).Value, j, 1)) <= 90 Then
upper = upper & Mid(Cells(i, 1).Value, j, 1)
ElseIf Asc(Mid(Cells(i, 1).Value, j, 1)) >= 97 And Asc(Mid(Cells(i, 1).Value, j, 1)) <= 122 Then
lower = lower & Mid(Cells(i, 1).Value, j, 1)
Else
upper = upper & Mid(Cells(i, 1).Value, j, 1)
lower = lower & Mid(Cells(i, 1).Value, j, 1)
End If
Next j
Cells(i, 2).Value = Application.WorksheetFunction.Trim(upper)
Cells(i, 3).Value = Application.WorksheetFunction.Trim(lower)
Next i
End Sub
Deneyiniz.
Ayırma işlemi yaptı ama baya hatalı ayırdı.
 
Katılım
20 Haziran 2018
Mesajlar
66
Excel Vers. ve Dili
2019 TR
Merhaba,

Kod:
Sub ExtractCase()
Dim i As Long
Dim upper As String
Dim lower As String
For i = 1 To 100
upper = ""
lower = ""
Dim word As Variant
Words = Split(Cells(i, 1).Value, " ")
      For Each word In Words
        If UCase(word) = word Then
           upper = upper & word & " "
        Else
           lower = lower & word & " "
        End If
      Next word
      Cells(i, 2).Value = Application.WorksheetFunction.Trim(upper)
      Cells(i, 3).Value = Application.WorksheetFunction.Trim(lower)
   Next i
End Sub
Format ile ilgili hata olmuştur, deneyiniz.
 
Katılım
6 Mart 2024
Mesajlar
108
Excel Vers. ve Dili
Excel 2010 TR & Excel 2016 TR
Merhaba
Güzel çözmüşsün bence
Türkçe karakterler de belki problem yaşama ihtimaline karşılık
Örnek : Kırk Parçalı Boru , Çıkık Boru, İç Boru Kayıp... gibi kelimeler de
Kod:
"[a-zçğıöşü]"
C++:
Function İlkKüçükHarfSonrasıMetin(Metin As String) As String
    Dim i As Integer
    For i = 1 To Len(Metin)
        ' Türkçe küçük harf kontrolü yapılıyor
        If Mid(Metin, i, 1) = LCase(Mid(Metin, i, 1)) And Mid(Metin, i, 1) Like "[a-zçğıöşü]" Then
            ' (İlk küçük harften -1) sonraki metni döndür
            İlkKüçükHarfSonrasıMetin = Mid(Metin, i - 1)
            Exit Function
        End If
    Next i
    ' Küçük harf bulunamadıysa boş bir dize döndür
    İlkKüçükHarfSonrasıMetin = ""
End Function
 
Son düzenleme:

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,250
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Merhaba,

Formülle alternatif...

Büyük harfli kelimeler;
C++:
=TEXTJOIN(" ";1;IF(EXACT(UPPER(TEXTSPLIT(A1;" "));TEXTSPLIT(A1;" "));TEXTSPLIT(A1;" ");""))
Küçük harfli kelimeler; (Baş harfi büyük olanlar...)
C++:
=TEXTJOIN(" ";1;IF(EXACT(PROPER(TEXTSPLIT(A1;" "));TEXTSPLIT(A1;" "));TEXTSPLIT(A1;" ");""))
 
Üst