• DİKKAT

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

3. a kaçıncı karakter?

Tevfik_Kursun

Altın Üye
Katılım
30 Temmuz 2012
Mesajlar
3,903
Excel Vers. ve Dili
Office 2016 Pro - Türkçe 64 Bit
Merhaba Arkadaşlar,
A1 hücresinde bulunan "adapazarına" kelimesindeki 3. a kaçıncı karakterdir?
Bu soruyu makro ile nasıl çözersiniz?
Saygılarımla
 
Merhaba,

Kod:
Public Sub kac()

Dim i As Integer, _
    j As Integer, _
    k As Integer, _
    aranan As String

aranan = "a"

If Not Range("A1") = "" Then
    For i = 1 To Len(Range("A1"))
        If Mid(Range("A1"), i, 1) = aranan Then
            j = j + 1
            If j = 3 Then
                k = i
                Exit For
            End If
        End If
    Next i
End If
    
If k > 0 Then
    MsgBox "Sıra : " & k
Else
    MsgBox "aranan harf bulunmadı"
End If

End Sub
 
Çok teşekkür ederim Necdet Hocam,
Saygılarımla
 
Kod:
Sub test()
    With CreateObject("VBScript.Regexp")
        .Global = True
        .Pattern = "a"
        With .Execute(Range("A1").Value)
            If .Count > 2 Then
                MsgBox .Item(2).firstindex + 1
            Else
                MsgBox "3 adet a yoktur."
            End If
        End With
    End With
End Sub
 
Alternatif;

C++:
Option Explicit

Sub Test()
    Dim Bul As Integer
    
    On Error Resume Next
    Bul = 0
    Bul = Evaluate("=FIND(""|"",SUBSTITUTE(A1,""A"",""|"",3),1)")
    On Error GoTo 0
    
    MsgBox IIf(Bul = 0, "Kelimede 3 adet A harfi yok!", Bul)
End Sub
 
Çok teşekkür ederim Veysel Emre Hocam,
Ama bu makro a ların sayısını veriyor
Saygılarımla
 
Son düzenleme:
Çok teşekkür ederim Korhan Ayhan Hocam,
Saygılarımla
 
Sayın Veysel Emre Hocam,
Çok haklısınız. Ancak şimdi daha çok merak ettim. "." nokta, "a" gibi bir karakter değil midir, yoksa ben mi yanlış düşünüyorum? Harf varsa hata vermiyor, ama nokta varsa hatalı geliyor.
Saygılarımla
 
RegExp uygulamasında desen olarak aşağıdaki gibi deneyiniz.

.Pattern = "\."
 
Kod:
Sub test2()
    Dim txt$
    txt = Range("A1").Value
    If Len(txt) - Len(Replace(txt, ".", "")) > 2 Then
        'MsgBox InStr(InStr(InStr(txt, ".") + 1, txt, ".") + 1, txt, ".")
        'veya döngülü ****************
        Dim bul As Integer, i As Integer
        bul = 0
        For i = 1 To 3
            bul = InStr(bul + 1, txt, ".")
        Next i
        MsgBox bul
        ' *****************************
    Else
        MsgBox "3/3+ adet . bulunamamıştır."
    End If
End Sub
Sub test3()
    Dim txt$
    txt = Range("A1").Value
    If Len(txt) - Len(Replace(txt, ".", "")) > 2 Then
        MsgBox InStr(WorksheetFunction.Substitute(txt, ".", Chr(2), 3), Chr(2))
    Else
        MsgBox "3/3+ adet . bulunamamıştır."
    End If
End Sub
 
Sayın Korhan Ayhan ve Sayın Veysel Emre Hocalarım,
Daha önce hiç karşılaşmamıştım. İlgilerinize ve bilgilendirmelerinize çok teşekkür ederim.
Son iki örnek için de ayrıca teşekkür ederim Veysel Emre Hocam
Saygılarımla
 
Geri
Üst