Soru Araç Plaka

sirkülasyon

Altın Üye
Katılım
10 Temmuz 2012
Mesajlar
2,550
Excel Vers. ve Dili
2021 LTSC TR
O2 hücresinde ilkoduharfrakam yani 12DED120, 80J1522, 32DF365 şeklinde
benim il kodu harf Rakam formatında 12 DED 120, 80 J 1522, 32 DF 365 şeklini alacak bir formüle ihtiyacım var.
 
=PARÇAAL(O2;1;2) & " " & METİNBİRLEŞTİR(""; DOĞRU; EĞER(EHATA(SAYIYAÇEVİR(PARÇAAL(O2; SIRALI(UZUNLUK(O2)-2;;3); 1))); PARÇAAL(O2; SIRALI(UZUNLUK(O2)-2;;3); 1); "")) & " " & PARÇAAL(O2; 3 + UZUNLUK(METİNBİRLEŞTİR(""; DOĞRU; EĞER(EHATA(SAYIYAÇEVİR(PARÇAAL(O2; SIRALI(UZUNLUK(O2)-2;;3); 1))); PARÇAAL(O2; SIRALI(UZUNLUK(O2)-2;;3); 1); ""))); 10)
 
Veri A1 de ise
B1 hücresine
=SOLDAN(A1;2)
C1 hücresine
=METİNBİRLEŞTİR("";DOĞRU;EĞER(ESAYIYSA(--PARÇAAL(A1;SIRALI(UZUNLUK(A1));1));"";PARÇAAL(A1;SIRALI(UZUNLUK(A1));1)))
D1 hücresine
=PARÇAAL(YERİNEKOY(A1;C1;"");3;10)
formüllerini yazın.
 
Merhaba,
Alternatif olarak VBA (UDF- kullanıcı tanımlı fonksiyon) ile çözümü
C++:
Function PlakaDuzelt(ByVal P As String) As String
    Static re1 As Object, re2 As Object
    If re1 Is Nothing Then
        ' Türkiye sivil / özel plakalar (Rakam + Harf + Rakam)
        Set re1 = CreateObject("VBScript.RegExp"): re1.Pattern = "^(\d{1,2})([A-ZÇĞİÖŞÜ]+)(\d+)$"
        
        ' KKTC, askeri, resmi veya diplomatik plakalar (Harf + Rakam)
        Set re2 = CreateObject("VBScript.RegExp"): re2.Pattern = "^([A-ZÇĞİÖŞÜ]+)(\d+)$"
    End If
    
    P = UCase(Trim(P))
    If re1.Test(P) Then
        PlakaDuzelt = re1.Replace(P, "$1 $2 $3")
    ElseIf re2.Test(P) Then
        PlakaDuzelt = re2.Replace(P, "$1 $2")
    Else
        PlakaDuzelt = P
    End If
End Function
 
Daha kısa çözümü
C++:
Function PlakaDuzelt(ByVal P As String) As String
    Static re As Object

    If re Is Nothing Then
        Set re = CreateObject("VBScript.RegExp")
        re.Pattern = "^(\d{0,2})([A-ZÇĞİÖŞÜ]+)(\d+)$"
    End If

    P = UCase$(Trim$(P))
    PlakaDuzelt = Trim$(re.Replace(P, "$1 $2 $3"))
End Function
 
Seç Beğen :
Kod:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim regEx As Object
Dim metin As String
On Error GoTo HataYonetimi
If Not Intersect(Target, Range("O2")) Is Nothing Then
Application.EnableEvents = False
If Target.Value <> "" Then
Set regEx = CreateObject("VBScript.RegExp")
regEx.Global = True
metin = UCase(Trim(Target.Value))
regEx.Pattern = "([0-9])([A-ZÇĞİÖŞÜ])"
metin = regEx.Replace(metin, "$1 $2")
regEx.Pattern = "([A-ZÇĞİÖŞÜ])([0-9])"
metin = regEx.Replace(metin, "$1 $2")
Target.Value = metin
End If
End If
HataYonetimi:
Application.EnableEvents = True
End Sub
 
Geri
Üst