• DİKKAT

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

Plaka Ayırma

Katılım
5 Ocak 2016
Mesajlar
129
Excel Vers. ve Dili
office 2010
Merhaba,

H5 den başlayarak aşağıya doğru araç plakları var. bu araç plakalarının arasında boşluk yok ve ortadaki harf kısımlarını alıp aynı seriden kaç tane olduğunu hesaplamam gerekiyor.
örn:
34S34
34AB879
34BRE607

Teşekkürler
 
A1'de plaka varsa:

İl kodu için B1 hücresine:

=SOLDAN(A1;2)

Harf grubu için C1 hücresine:

=YERİNEKOY(SAĞDAN(A1;UZUNLUK(A1)-2);D1;"")

Sıra no için D1 hücresine:

=ARA(9,99999999999999E+307;--SAĞDAN(A1;SATIR($1:$1000)))

Eğer sadece harf grubunu almak istiyorsanız B1 hücresine:

=YERİNEKOY(SAĞDAN(A3;UZUNLUK(A3)-2);ARA(9,99999999999999E+307;--SAĞDAN(A3;SATIR($1:$1000)));"")
 
Yusuf Bey,

Teşekkürler, rica etsem formülün açıklamasını ayrıştırarak yapar mısınız. harften sonra rakam kısmı 0 ile başlıyorsa harfin sonuna 0 koyuyor

=YERİNEKOY(SAĞDAN(A3;UZUNLUK(A3)-2);ARA(9,99999999999999E+307;--SAĞDAN(A3;SATIR($1:$1000)));"")
 
Son düzenleme:
O sorun nasıl çözülür bulamadım, şöyle bir formül yazdım:

=YERİNEKOY(YERİNEKOY(YERİNEKOY(YERİNEKOY(YERİNEKOY(YERİNEKOY(YERİNEKOY(YERİNEKOY(YERİNEKOY(YERİNEKOY(A1;0;"");1;"");2;"");3;"");4;"");5;"");6;"");7;"");8;"");9;"")
 
Aşağıdaki kodu kişisel makro dosyasına kayıt ederseniz.
Tüm dosyalarınızda kullanabilirsiniz.

Kullanımı:
=PERSONAL.XLSB!PLAKAAYIR(C3)

214979

Kod:
Public Function PLAKAAYIR(plakatxt As Variant) As String
  liste = "0123456789"
  For k = 1 To Len(plakatxt)
    harf = Mid(plakatxt, k, 1)
    If InStr(liste, harf) <= 0 Then
       plaka = plaka & harf
    End If
  Next k
  PLAKAAYIR = plaka
End Function
 
Merhaba,
Alternatif olsun.

Plaka A1 de olduğu varsayılarak.
B1 : İl Kodu
Kod:
=SOLDAN(A1;2)
C1 : Harf Grubu
Kod:
=YERİNEKOY(YERİNEKOY(A1;B1;"");D1;"")
D1: Rakam Grubu, Dizi Formüldür,Formülü Ctrl+Shift+Enter ile bitirmek gerek.
c1 formülünden önce D1 deki formülü yazmak gerek.

Kod:
=PARÇAAL(YERİNEKOY(A1;B1;"");KAÇINCI(0;(EHATALIYSA(PARÇAAL(YERİNEKOY(A1;B1;"");SATIR(DOLAYLI("1:"&UZUNLUK(YERİNEKOY(A1;B1;""))));1)*1)*1);0);UZUNLUK(YERİNEKOY(A1;B1;""))-TOPLA((EHATALIYSA(PARÇAAL(YERİNEKOY(A1;B1;"");SATIR (DOLAYLI("1:" & UZUNLUK(YERİNEKOY(A1;B1;""))));1)*1)*1)))
 
Alternatif;

Yeni versiyonlar için geçerlidir. (Ofis 2019 - Ofis 365)

DİZİ formüldür. (CTRL+SHIFT+ENTER)

C++:
=METİNBİRLEŞTİR(;;EĞERHATA(EĞER(HATA.TİPİ(0+PARÇAAL(H5;SATIR(DOLAYLI("A1:A"&UZUNLUK(H5)));1)=3);PARÇAAL(H5;SATIR(DOLAYLI("A1:A"&UZUNLUK(H5)));1);"");""))
 
Merhaba @serdar.gul
Denermisiniz.

il kodu için
Kod:
=SOLDAN(A1;2)
harfler için
Kod:
=PARÇAAL(SOLDAN(A1;MİN(BUL({1\2\3\4\5\6\7\8\9\0};PARÇAAL(A1;3;10)&"0123456789"))+1);3;4)
sondaki sayılar için
Kod:
=PARÇAAL(PARÇAAL(A1;3;9);MİN(BUL({1\2\3\4\5\6\7\8\9\0};PARÇAAL(A1;3;8)&"0123456789"));4)
 
RegExp ile yazılmış KTF

Bu sitede bununla ilgili bir konu vardı ama bulamadım.


Kod:
Function asayıayır(ByVal WhichString As String) As Variant

With CreateObject("VBScript.RegExp")
.Pattern = "([0-9]{2})([A-Z]{1,3})([0-9]{2,4})"
.Global = True
asayıayır = .Replace(WhichString, "$1 $2 $3")
End With

End Function
Function bsayıayır(ByVal WhichString As String) As Variant

With CreateObject("VBScript.RegExp")
.Pattern = "([0-9])"
.Global = True
bsayıayır = .Replace(WhichString, "")
End With

End Function
 
"Regular Expressions" ile alternatif:


Kod:
Function SplitPlaka(myRange As Range, i As Integer)
'   Haluk - 05/03/2020
'   sa4truss@gmail.com

    Set regExp = CreateObject("VBScript.RegExp")
    
    regExp.IgnoreCase = True
    regExp.Global = True
    
    regExp.Pattern = "(\d{2})([A-Z]{1,3})(\d{2,5})"
    If regExp.Test(myRange.Text) Then
        Set objMatches = regExp.Execute(myRange.Text)
        SplitPlaka = objMatches.Item(0).Submatches(i)
    End If
    
    Set objMatches = Nothing
    Set regExp = Nothing
End Function


Kullanımı şöyle;

Plaka verileri örneğin A1 hücresindeyse;

-İl kodu için B1 hücresine;

Kod:
=SplitPlaka(A1;0)


-Harf grubu için C1 hücresine;

Kod:
=SplitPlaka(A1;1)


-Sondaki nümerik veri için D1 hücresine;

Kod:
=SplitPlaka(A1;2)


.
 
Son düzenleme:
ilginize teşekkür ederim. hepsini deniyeceğim.
 
Geri
Üst