3 Büyük Harf Kuralı

Katılım
15 Mayıs 2015
Mesajlar
518
Excel Vers. ve Dili
Microsoft Office 2019
Altın Üyelik Bitiş Tarihi
26/06/2023
Merhaba ;

Bir hücrede değer doğrulama yapmak istiyorum ama vba ile. İf else ile yazılsa yeterli Uygun Yada Ret

Türkçe Karakterlerin de kullanıldığı kuralı bozmaması lazım ( İ,Ç,Ğ,Ü,Ö)

Kural : 3 Büyükharf ABC CDE gibi.

Ret : 1A2 125 A12 aBC gibi

yardımlarınızı bekliyorum
 

seljuke

Altın Üye
Katılım
17 Mayıs 2020
Mesajlar
3
Excel Vers. ve Dili
2010
Altın Üyelik Bitiş Tarihi
17-05-2025

Zeki Gürsoy

Uzman
Uzman
Katılım
31 Aralık 2005
Mesajlar
4,374
Excel Vers. ve Dili
Office 365 (64 bit) - Türkçe
Farklı algoritmalar da geliştirilebilir... Ancak Regular Expressions ile bu işlem çok daha kolay.
Test edin...

PHP:
Sub Example()
    MsgBox TestLetters("A2C")
End Sub


Function TestLetters(ByVal letter As String) As Boolean
    Static objReg As Object
  
    If objReg Is Nothing Then Set objReg = CreateObject("VBScript.RegExp")
  
    objReg.Pattern = "[A-ZİÇĞÜÖ]{3}"
  
    TestLetters = objReg.Test(letter)
End Function
 
Katılım
21 Aralık 2016
Mesajlar
739
Excel Vers. ve Dili
Office 365 TR

Alternatif olarak....
Hazırlamışken ekleyeyim istedim... Eki incelersiniz...
Not : Acemi işidir...

Kullanıcı Tanımlı Fonksiyon
Kod:
Function UcBH(rng As Range)
Dim i As Integer, a As Integer, s As Integer, k As Integer, f As String
   a = Len(rng)
      If rng = "" Or a < 3 Then
         UcBH = "H A T A"
         Exit Function
      End If
   s = 0
   For i = 1 To a
      f = Mid(rng, i, 1)
      k = Application.WorksheetFunction.Unicode(f)
         If k > 64 And k < 91 Or k > 219 And k < 223 Or k = 199 Or k = 208 Or k = 214 Then
            s = s + 1
               If s > 2 Then
                  UcBH = "UYGUN"
                  Exit Function
               End If
         Else
            s = 0
         End If
   Next
      UcBH = "Uygun DEGiL"
End Function
KTF kullanımı
=UcBH(HücreAdresi)
şeklindedir.
 

Tevfik_Kursun

Altın Üye
Katılım
30 Temmuz 2012
Mesajlar
3,823
Excel Vers. ve Dili
Office 2016 Pro - Türkçe 64 Bit
Altın Üyelik Bitiş Tarihi
12-02-2029
Merhaba Arkadaşlar,
Zeki hocam, canınız sıkılmasın haa!
KTF de aşağıdaki satırına Ş ekleyiniz.
objReg.Pattern = "[A-ZİÇĞÜÖ]{3}"
İyi çalışmalar
 

Tevfik_Kursun

Altın Üye
Katılım
30 Temmuz 2012
Mesajlar
3,823
Excel Vers. ve Dili
Office 2016 Pro - Türkçe 64 Bit
Altın Üyelik Bitiş Tarihi
12-02-2029
Merhaba Arkadaşlar,
52779 arkadaşım canınız sıkılmasın haa!
KTF de aşağıdaki satırı değiştiriniz
If k > 64 And k < 91 Or k > 219 And k < 223 Or k = 199 Or k = 286 Or k = 214 Or k = 304 Or k = 350 Then
İyi çalışmalar
Not: hiç te öyle acemi işine benzemiyor. Elinize sağlık
 
Son düzenleme:

Tevfik_Kursun

Altın Üye
Katılım
30 Temmuz 2012
Mesajlar
3,823
Excel Vers. ve Dili
Office 2016 Pro - Türkçe 64 Bit
Altın Üyelik Bitiş Tarihi
12-02-2029
Sayın Hlojan,
Ş harfini kullanmıyorsanız Zeki hocamın KTF sini ellemeyiniz.
52779 arkadaşımın KTF sinde Or k=350 yi siliniz.
İyi çalışmalar
 
Katılım
21 Aralık 2016
Mesajlar
739
Excel Vers. ve Dili
Office 365 TR
Merhaba Arkadaşlar,
52779 arkadaşım canınız sıkılmasın haa!
KTF de aşağıdaki satırı değiştiriniz
If k > 64 And k < 91 Or k > 219 And k < 223 Or k = 199 Or k = 286 Or k = 214 Or k = 304 Or k = 350 Then
İyi çalışmalar
Not: hiç te öyle acemi işine benzemiyor. Elinize sağlık
Çok teşekkür ediyorum,

If k > 64 And k < 91 Or k > 219 And k < 223 Or k = 199 Or k = 208 Or k = 214 Then

satırı, A dan Z ye ve Ç, Ğ, İ, Ö, Ş, Ü tümü için ,

If k > 64 And k < 91 Or k = 199 Or k = 214 Or k = 220 Or k = 286 Or k = 304 Or k = 350 Then

şeklinde olacak...
 

Haluk

Özel Üye
Katılım
7 Temmuz 2004
Mesajlar
12,406
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Altın Üyelik Bitiş Tarihi
Alternatif:


Kod:
Sub Test()
    MsgBox TestLettersHD("AIW")
End Sub
'
Function TestLettersHD(ByVal strVal As String) As Boolean
    If strVal Like "[A-ZİÇĞÜÖŞ][A-ZİÇĞÜÖŞ][A-ZİÇĞÜÖŞ]" Then TestLettersHD = True
End Function


Fonksiyon, aşağıdaki gibi de olabilir;

Kod:
Function TestLettersHD(ByVal strVal As String) As Boolean
    If strVal Like WorksheetFunction.Rept("[A-ZİÇĞÜÖŞ]", 3) Then TestLettersHD = True
End Function
.

.
 
Son düzenleme:
Katılım
21 Aralık 2016
Mesajlar
739
Excel Vers. ve Dili
Office 365 TR
Alternatif:


Kod:
Sub Test()
    MsgBox TestLettersHD("AIW")
End Sub
'
Function TestLettersHD(ByVal strVal As String) As Boolean
    If strVal Like "[A-ZİÇĞÜÖŞ][A-ZİÇĞÜÖŞ][A-ZİÇĞÜÖŞ]" Then TestLettersHD = True
End Function


Fonksiyon, aşağıdaki gibi de olabilir;

Kod:
Function TestLettersHD(ByVal strVal As String) As Boolean
    If strVal Like WorksheetFunction.Rept("[A-ZİÇĞÜÖŞ]", 3) Then TestLettersHD = True
End Function
.

.
Mükemmel.
Çok teşekkürler..

Nacizane önerim : Hücrede 3 karakterden fazla olması durumunun da kodlara eklenmesi...
 

Haluk

Özel Üye
Katılım
7 Temmuz 2004
Mesajlar
12,406
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Altın Üyelik Bitiş Tarihi

Haluk

Özel Üye
Katılım
7 Temmuz 2004
Mesajlar
12,406
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Altın Üyelik Bitiş Tarihi
Karakter sayısını, otomatik olarak alsın istiyorsanız;

Kod:
Function TestLettersHD(ByVal strVal As String) As Boolean
    If strVal Like WorksheetFunction.Rept("[A-ZİÇĞÜÖŞ]", Len(strVal)) Then TestLettersHD = True
End Function
.
 
Katılım
21 Aralık 2016
Mesajlar
739
Excel Vers. ve Dili
Office 365 TR
Demek istediğim tam olarak şu idi..
Hücrede yazan 34 AJK 09 gibi bir değer olsun. (3 Büyük harf var ama) Bu durumda Fonksiyon YANLIŞ değeri vermekte.
Yani acemice belki ama Like " * " &..............& " * " gibi yapılabilir demek istemiştim.
 

Haluk

Özel Üye
Katılım
7 Temmuz 2004
Mesajlar
12,406
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Altın Üyelik Bitiş Tarihi
Demek istediğim tam olarak şu idi..
Hücrede yazan 34 AJK 09 gibi bir değer olsun. (3 Büyük harf var ama) ....
......
..

2 dijit, 1 boşluk, 3 Büyuk Harf, 1 boşluk, 2 dijit için desen kontrolü;


Kod:
Sub Test()
    MsgBox TestLettersHD("34 AJK 09")
End Sub
'
Function TestLettersHD(ByVal strVal As String) As Boolean
    If strVal Like "## " & WorksheetFunction.Rept("[A-Z]", 3) & " ##" Then TestLettersHD = True
End Function
.
 
Katılım
21 Aralık 2016
Mesajlar
739
Excel Vers. ve Dili
Office 365 TR
Tam olarak anlatamadım tabi ki.. Hata bende....
Hücrede 3 karakterden fazla bir ifade var. 34 AJK 07 de olabilir, ADANA da olabilir. Ya da başka, 3 peşpeşe büyük harf içeren herhangi uzun bir kelime de olabilir. Tüm durumlarda çalışacak şekilde fonksiyonun düzenlenmesini önermiştim...

Yordum sizi.. kusuruma bakmayın...
 
Katılım
15 Mayıs 2015
Mesajlar
518
Excel Vers. ve Dili
Microsoft Office 2019
Altın Üyelik Bitiş Tarihi
26/06/2023
Alternatif:


Kod:
Sub Test()
    MsgBox TestLettersHD("AIW")
End Sub
'
Function TestLettersHD(ByVal strVal As String) As Boolean
    If strVal Like "[A-ZİÇĞÜÖŞ][A-ZİÇĞÜÖŞ][A-ZİÇĞÜÖŞ]" Then TestLettersHD = True
End Function


Fonksiyon, aşağıdaki gibi de olabilir;

Kod:
Function TestLettersHD(ByVal strVal As String) As Boolean
    If strVal Like WorksheetFunction.Rept("[A-ZİÇĞÜÖŞ]", 3) Then TestLettersHD = True
End Function
.

.

Herkese teşekkürler. 13 cevap görünce şaşırdım.

Hepsini denemedim ama Haluk Beyinki sorunsuz çalıştı her kombinasyonu denedim. Sorunsuz

Teşekkürler
 

Haluk

Özel Üye
Katılım
7 Temmuz 2004
Mesajlar
12,406
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Altın Üyelik Bitiş Tarihi
Tam olarak anlatamadım tabi ki.. Hata bende....
Hücrede 3 karakterden fazla bir ifade var. 34 AJK 07 de olabilir, ADANA da olabilir. Ya da başka, 3 peşpeşe büyük harf içeren herhangi uzun bir kelime de olabilir. Tüm durumlarda çalışacak şekilde fonksiyonun düzenlenmesini önermiştim...

Yordum sizi.. kusuruma bakmayın...
Bu tip kodlamada, işin başında standart bir "desen" oluşturmak önemlidir. Oluşturulan desene göre veri(ler) incelenir. Ben sizin deseninizi maalesef anlayamadım.

Siz de benim kusuruma bakmayın, kolay gelsin ...

.
 
Katılım
21 Aralık 2016
Mesajlar
739
Excel Vers. ve Dili
Office 365 TR
Bu tip kodlamada, işin başında standart bir "desen" oluşturmak önemlidir. Oluşturulan desene göre veri(ler) incelenir. Ben sizin deseninizi maalesef anlayamadım.

Siz de benim kusuruma bakmayın, kolay gelsin ...

.
Çok teşekkür ediyorum gerçekten..
Selamlarımla...
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,765
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Bir alternatifte ben paylaşmak isterim.

C++:
Option Explicit

Function K_HARF_KONTROL(Veri As Variant) As Boolean
    Dim X As Byte, Metin As String
    
    Application.Volatile True
    
    Metin = Veri
    
    For X = 65 To 222
        Select Case X
            Case 65 To 90, 199, 208, 214, 220 To 222
            Metin = Replace(Metin, Chr(X), "|")
        End Select
    Next
    
    K_HARF_KONTROL = InStr(1, Metin, "|||") > 0
End Function
 
Üst