Soru RAKAM VE HARF AYIRMAK

Bintang

Altın Üye
Katılım
31 Ekim 2006
Mesajlar
328
Excel Vers. ve Dili
Microsoft Office Professional Plus 2019,Türkçe
Altın Üyelik Bitiş Tarihi
05-09-2029
Merhaba; Şirketimize ait araçların yakıt takiplerini anlaşmalı olduğumuz firmadan gelen aylık tablolarla hesap yapmaktayız. Ancak plakalar yapışık olduğu için ayıramıyorum bazı plakalar 06AA123, bazı plakalar ise 06AAA123 vb. bana bu konuda yardımcı olursanız çok sevinirim. Örnek dosya ektedir.
 

Ekli dosyalar

Katılım
8 Ekim 2009
Mesajlar
642
Excel Vers. ve Dili
Office 2010 & 2016 TR
Altın Üyelik Bitiş Tarihi
26-12-2023
Merhaba,
Anladığım kadarıyla B : D sütunlarını bu işlemi yapmaya çalıştığınız için oluşturdunuz.
Bunları silip B2 hücresine plakayı olmasını istediğiniz formatta yazın. Enterlayın. B3'te iken ctrl+E tuşlayın.
Bütün satırlar istediğiniz şekli alacak.
 

Ekli dosyalar

Bintang

Altın Üye
Katılım
31 Ekim 2006
Mesajlar
328
Excel Vers. ve Dili
Microsoft Office Professional Plus 2019,Türkçe
Altın Üyelik Bitiş Tarihi
05-09-2029
Merhaba,
Anladığım kadarıyla B : D sütunlarını bu işlemi yapmaya çalıştığınız için oluşturdunuz.
Bunları silip B2 hücresine plakayı olmasını istediğiniz formatta yazın. Enterlayın. B3'te iken ctrl+E tuşlayın.
Bütün satırlar istediğiniz şekli alacak.
Üstad ben sadece 3 adet plaka yazdım yüzlerce plaka var her birini elimle yazmak istemediğim için bu formüllerle çalışıyordum yeni araçların plakaları 3 harf ve 3 rakam olunca karıştı tüm işler
 
Katılım
8 Ekim 2009
Mesajlar
642
Excel Vers. ve Dili
Office 2010 & 2016 TR
Altın Üyelik Bitiş Tarihi
26-12-2023
Üstad ben sadece 3 adet plaka yazdım yüzlerce plaka var her birini elimle yazmak istemediğim için bu formüllerle çalışıyordum yeni araçların plakaları 3 harf ve 3 rakam olunca karıştı tüm işler
Sadece B2ye yazacaksınız ilk plakayı (olmasını istediğiniz şekilde, yani 06 AB 123 gibi)
Enterlayıp B3'e gelip ctrl+E yapınca gerisi otomatik doluyor.
 

Ömer BARAN

Uzman
Katılım
8 Mart 2011
Mesajlar
12,997
Excel Vers. ve Dili
Office 2013 ( 32 bit ) TÜRKÇE
Altın Üyelik Bitiş Tarihi
(18.03.2020) - Uzman olduğu için tarih geçersiz oldu.
Merhaba.
Alternatif olsun.
Madem belgenizde KTF'ler mevcut. O halde aşağıdaki KTF'yi uygun bir MODULE yapıştırıp, hücreye =PLAKAAYIR(A2) yazıp kullanabilirsiniz.
Rich (BB code):
Function PLAKAAYIR(hcr As Range)
If Len(hcr) - Len(Replace(hcr, " ", "")) = 2 Then Exit Function
    For k = 3 To Len(hcr) - 2
        If Not IsNumeric(Mid(hcr, k, 1)) Then harf = harf & Mid(hcr, k, 1)
    Next
    PLAKAAYIR = Left(hcr, 2) & " " & harf & " " & Mid(hcr, Len(harf) + 3, 4)
End Function
 

excel41

Destek Ekibi
Destek Ekibi
Katılım
1 Ocak 2013
Mesajlar
759
Excel Vers. ve Dili
Excel 2019 Türkçe
B2 Hücresine uygulayın , Formül ile alternatif olsun

Kod:
=SOLDAN(A2;2)&"  "&PARÇAAL(A2;3;UZUNLUK(A2)-TOPLA.ÇARPIM(UZUNLUK(A2)-UZUNLUK(YERİNEKOY(A2;{1;2;3;4;5;6;7;8;9;0};""))))&" "&SAĞDAN(A2;TOPLA.ÇARPIM(UZUNLUK(A2)-UZUNLUK(YERİNEKOY(A2;{1;2;3;4;5;6;7;8;9;0};"")))-2)
 

Bintang

Altın Üye
Katılım
31 Ekim 2006
Mesajlar
328
Excel Vers. ve Dili
Microsoft Office Professional Plus 2019,Türkçe
Altın Üyelik Bitiş Tarihi
05-09-2029
Sadece B2ye yazacaksınız ilk plakayı (olmasını istediğiniz şekilde, yani 06 AB 123 gibi)
Enterlayıp B3'e gelip ctrl+E yapınca gerisi otomatik doluyor.
Üstad Crtl+E deyince (Ekle Tablosu Çıkıyor Hücreleri Sağa Sürükle,Hücreleri Aşağı Sürükle,Tüm Satır,Tüm Sütun)
 

Bintang

Altın Üye
Katılım
31 Ekim 2006
Mesajlar
328
Excel Vers. ve Dili
Microsoft Office Professional Plus 2019,Türkçe
Altın Üyelik Bitiş Tarihi
05-09-2029
B2 Hücresine uygulayın , Formül ile alternatif olsun

Kod:
=SOLDAN(A2;2)&"  "&PARÇAAL(A2;3;UZUNLUK(A2)-TOPLA.ÇARPIM(UZUNLUK(A2)-UZUNLUK(YERİNEKOY(A2;{1;2;3;4;5;6;7;8;9;0};""))))&" "&SAĞDAN(A2;TOPLA.ÇARPIM(UZUNLUK(A2)-UZUNLUK(YERİNEKOY(A2;{1;2;3;4;5;6;7;8;9;0};"")))-2)
Üstadım çok teşekkür ederim.Ellerinize sağlık
 

Bintang

Altın Üye
Katılım
31 Ekim 2006
Mesajlar
328
Excel Vers. ve Dili
Microsoft Office Professional Plus 2019,Türkçe
Altın Üyelik Bitiş Tarihi
05-09-2029
Merhaba.
Alternatif olsun.
Madem belgenizde KTF'ler mevcut. O halde aşağıdaki KTF'yi uygun bir MODULE yapıştırıp, hücreye =PLAKAAYIR(A2) yazıp kullanabilirsiniz.
Rich (BB code):
Function PLAKAAYIR(hcr As Range)
If Len(hcr) - Len(Replace(hcr, " ", "")) = 2 Then Exit Function
    For k = 3 To Len(hcr) - 2
        If Not IsNumeric(Mid(hcr, k, 1)) Then harf = harf & Mid(hcr, k, 1)
    Next
    PLAKAAYIR = Left(hcr, 2) & " " & harf & " " & Mid(hcr, Len(harf) + 3, 4)
End Function
Üstadım çok teşekkür ederim.Ellerinize sağlık
 

Bintang

Altın Üye
Katılım
31 Ekim 2006
Mesajlar
328
Excel Vers. ve Dili
Microsoft Office Professional Plus 2019,Türkçe
Altın Üyelik Bitiş Tarihi
05-09-2029
Üstad Crtl+E deyince (Ekle Tablosu Çıkıyor Hücreleri Sağa Sürükle,Hücreleri Aşağı Sürükle,Tüm Satır,Tüm Sütun)
Üstadım çok teşekkür ederim.Ellerinize sağlık
 

Bintang

Altın Üye
Katılım
31 Ekim 2006
Mesajlar
328
Excel Vers. ve Dili
Microsoft Office Professional Plus 2019,Türkçe
Altın Üyelik Bitiş Tarihi
05-09-2029
Merhaba.
Alternatif olsun.
Madem belgenizde KTF'ler mevcut. O halde aşağıdaki KTF'yi uygun bir MODULE yapıştırıp, hücreye =PLAKAAYIR(A2) yazıp kullanabilirsiniz.
Rich (BB code):
Function PLAKAAYIR(hcr As Range)
If Len(hcr) - Len(Replace(hcr, " ", "")) = 2 Then Exit Function
    For k = 3 To Len(hcr) - 2
        If Not IsNumeric(Mid(hcr, k, 1)) Then harf = harf & Mid(hcr, k, 1)
    Next
    PLAKAAYIR = Left(hcr, 2) & " " & harf & " " & Mid(hcr, Len(harf) + 3, 4)
End Function
Üstadım eğer bana kızmaz iseniz size bir şey sormak istiyorum. Ben bu makroyu kopyalayıp ve çalıştıramadım bana bu konuda da yardımcı olabilirmisiniz çok özürdilerim.
 

Ömer BARAN

Uzman
Katılım
8 Mart 2011
Mesajlar
12,997
Excel Vers. ve Dili
Office 2013 ( 32 bit ) TÜRKÇE
Altın Üyelik Bitiş Tarihi
(18.03.2020) - Uzman olduğu için tarih geçersiz oldu.
Estağfurullah.
Verdiğim kodu belgenizde boş bir Modüle yapıştırın.
(belge zaten makro içeren türünden idi ve belgeyi açarken de makroların aktifleştirildiğini varsayıyorum)

Bu işlemden sonra istediğiniz hücreye =PLAKAAYIR(A2) şeklindeki formül içine plakanın bulunduğu hücre adresini yazmanız yeterli olur.
.
 
Katılım
8 Ekim 2009
Mesajlar
642
Excel Vers. ve Dili
Office 2010 & 2016 TR
Altın Üyelik Bitiş Tarihi
26-12-2023
Üstad Crtl+E deyince (Ekle Tablosu Çıkıyor Hücreleri Sağa Sürükle,Hücreleri Aşağı Sürükle,Tüm Satır,Tüm Sütun)
Sanırım excel versiyon farkından. Bende Excel 2016 var ve ctrl+E yapınca hiç birşey sormadan son satıra kadar otomatik düzeltiyor.
Neyse, artık formülle çözmüşsünüz zaten.
 

Ömer BARAN

Uzman
Katılım
8 Mart 2011
Mesajlar
12,997
Excel Vers. ve Dili
Office 2013 ( 32 bit ) TÜRKÇE
Altın Üyelik Bitiş Tarihi
(18.03.2020) - Uzman olduğu için tarih geçersiz oldu.
Bir formül alternatifi de ben vereyim dedim.
Rich (BB code):
=SOLDAN(A2;2)&" "&PARÇAAL(A2;3;MİN(MBUL({0;1;2;3;4;5;6;7;8;9};PARÇAAL(A2;3;8)&"0123456789"))-1)&" "&PARÇAAL(A2;MİN(MBUL({0;1;2;3;4;5;6;7;8;9};PARÇAAL(A2;3;8)&"0123456789"))+2;4)
 

Bintang

Altın Üye
Katılım
31 Ekim 2006
Mesajlar
328
Excel Vers. ve Dili
Microsoft Office Professional Plus 2019,Türkçe
Altın Üyelik Bitiş Tarihi
05-09-2029
Sanırım excel versiyon farkından. Bende Excel 2016 var ve ctrl+E yapınca hiç birşey sormadan son satıra kadar otomatik düzeltiyor.
Neyse, artık formülle çözmüşsünüz zaten.
Tekrar çok teşekkür ederim.
 

veyselemre

Özel Üye
Katılım
9 Mart 2005
Mesajlar
3,647
Excel Vers. ve Dili
Pro Plus 2021
Bir çok çözüm yolu üretilmiş, üretilebilir de,
Regexp scriptiyle çözüm; Modül içerisine ekleyip çalıştırın, a sütunundaki verileri G sütununa boşluklu olarak atar,

Kod:
Sub Plaka_Ayir()
    [G:G].ClearContents
    With CreateObject("vbscript.regexp")
        .Global = True
        .Pattern = "(\d{2})(\D{1,3})(\d{2,4})"
        For Each huc In Range("A2:A" & Cells(Rows.Count, 1).End(3).Row)
            If .test(huc.Value) Then
                ver = ""
                For Each elem In .Execute(huc.Value)(0).submatches
                    ver = ver & " " & elem
                Next
                huc.Offset(0, 6) = Trim(ver)
            End If
        Next
    End With
End Sub
Kod:
Sub Plaka_Ayir2()
    [G:G].ClearContents
    With CreateObject("vbscript.regexp")
        .Global = True
        .Pattern = "(\d{2})(\D{1,3})(\d{2,4})"
        For Each huc In Range("A2:A" & Cells(Rows.Count, 1).End(3).Row)
            If .Test(huc.Value) Then
                huc.Offset(0, 6) = .Replace(huc.Value, "$1 $2 $3")
            End If
        Next
    End With
End Sub
Kod:
Sub test()
    For i = 2 To Cells(Rows.Count, 1).End(3).Row
        ver = Cells(i, 1)
        For ii = 3 To 4
            If Not IsNumeric(Mid(StrReverse(ver), ii, 1)) Then Exit For
        Next ii
        Cells(i, 2) = Left(ver, 2) & " " & Mid(ver, 3, Len(ver) - ii - 1) & " " & Right(ver, ii - 1)
    Next i
End Sub
Kod:
Sub fakePlakaData()
    For i = 2 To 65536
        il = Format(WorksheetFunction.RandBetween(1, 81), "00")
        hrfUz = WorksheetFunction.RandBetween(1, 3)
        hrfler = ""
        For ii = 1 To hrfUz
            hrfler = hrfler & Chr(WorksheetFunction.RandBetween(65, 90))
        Next ii
        Select Case hrfUz
            Case 1: sonekUz = 4
            Case 2: sonekUz = WorksheetFunction.RandBetween(3, 4)
            Case 3: sonekUz = WorksheetFunction.RandBetween(2, 3)
        End Select
  
        sonek = Format(WorksheetFunction.RandBetween(1, 10 ^ sonekUz - 1), String(sonekUz, "0"))
        Cells(i, 1) = Trim(il & hrfler & sonek)
    Next i
End Sub
 
Son düzenleme:

Bintang

Altın Üye
Katılım
31 Ekim 2006
Mesajlar
328
Excel Vers. ve Dili
Microsoft Office Professional Plus 2019,Türkçe
Altın Üyelik Bitiş Tarihi
05-09-2029
Bir çok çözüm yolu üretilmiş, üretilebilir de,
Regexp scriptiyle çözüm; Modül içerisine ekleyip çalıştırın, a sütunundaki verileri G sütununa boşluklu olarak atar,

Kod:
Sub Plaka_Ayir()
    [G:G].ClearContents
    With CreateObject("vbscript.regexp")
        .Global = True
        .Pattern = "(\d{2})(\D{2,3})(\d{2,4})"
        For Each huc In Range("A2:A" & Cells(Rows.Count, 1).End(3).Row)
            If .test(huc.Value) Then
                ver = ""
                For Each elem In .Execute(huc.Value)(0).submatches
                    ver = ver & " " & elem
                Next
                huc.Offset(0, 6) = Trim(ver)
            End If
        Next
    End With
End Sub
Teşekkür ederim ellerinize sağlık
 

Mdemir63

Altın Üye
Katılım
7 Temmuz 2006
Mesajlar
2,866
Excel Vers. ve Dili
Ofis2010 32Bit Türkçe
Altın Üyelik Bitiş Tarihi
19-02-2026
Selamlar
Veysel hocam
elinize sağlık . Ancak örneğin: 34M3650 olduğunda sanırım harf tek olduğundan ayırmıyor. Bakma ihtimaliniz var mı?

saygılar
 

Mdemir63

Altın Üye
Katılım
7 Temmuz 2006
Mesajlar
2,866
Excel Vers. ve Dili
Ofis2010 32Bit Türkçe
Altın Üyelik Bitiş Tarihi
19-02-2026
Selamlar

Evet hocam düzeldi.
Elinize sağlık.

Saygılar
 
Üst