Skip to main content

AccessTr.neT


Araç Plakalarından Boşta Olanları Bulma

Araç Plakalarından Boşta Olanları Bulma

#7
Sayın @atoykan ve Sayın @feraz bey çok teşekkür ederim deneyip bilgi veririm.
yyhy, 18-05-2009 tarihinden beri AccessTr.neT üyesidir.
Cevapla
#8
Sayın @atoykan makroyu denedim gayet güzel çalışıyor (99 ve AL ) rakam harf grubu değişken bize son kısım olan rakam gurubu baz alınabilir mi? Başka bir yerde örneğin 99 yerine 42,43,34 ....plakalar kullanılabilir. Plaka rakam gurubu gibi harf serisi de değişken olabilir. Bunları makro içinden çıkarabilir miyiz? Makrolu alanı şifreleyip o alana erişimi kısıtlamak istiyorub. Sıralı olması gayet güzel olmuş. Tek bölüm 99 ve AL kısmını makro içerisine dahil etmeden işlem yapılabilir mi?

Sayın @feraz bey sizin makronuzu da denedim arada boşluklar kalıyor boşluklar kaldırılıp sıralı yapılabilir mi?
yyhy, 18-05-2009 tarihinden beri AccessTr.neT üyesidir.
Cevapla
#9
Plakadan bahsediyorsunuz. Plaka il kodu,tek harf, 3-4-5 rakam da olabilir, 2 harf , 3 harf de vs. Plaka ile ilgili her opsiyonu düşünmeniz gerekmez mi?
Cevapla
#10
Alttaki gibi Trim ile yapabilirsiniz ama tam anlamadım nerde boşluk.

plaka = Trim(.Cells(i, "D").Value)

Yada 5.Mesajdaki yeri alttaki gibi deneyin.

kelime = Trim(CStr(.Cells(i, "C").Value))
Cevapla
#11
Kodu aşağıdaki gibi güncelleyin.
Sub PlakaKontrol()
    Dim ws As Worksheet
    Dim LastRow As Long, i As Long
    Dim SeriNo As String, PlakaGrubu As String, PlakaHarfGrubu As String
    Dim Plaka As Range, Verilmeyenler As Range

    Set ws = ThisWorkbook.Sheets("Sayfa1") ' Çalışma sayfasını tanımla

    LastRow = ws.Cells(ws.Rows.Count, "C").End(xlUp).Row ' Son satırı bul

    For i = 3 To LastRow
        SeriNo = ws.Cells(i, 3).Value ' Seri-999 değerini al
        PlakaGrubu = Left(Cells(i, 4), 2) ' plaka il gurubunu belirler
        PlakaHarfGrubu = SadeceHarfler(Cells(i, 4)) ' plaka harf grubunu belirler
   
        ' Plaka sütununda "99AL" & serino'yu ara
        Set Plaka = ws.Columns("DLol").Find(What:=PlakaGrubu & PlakaHarfGrubu & SeriNo, LookIn:=xlValues, LookAt:=xlWhole)

        If Plaka Is Nothing Then ' Eğer kayıt yoksa Verilmeyenler sütununa ekle
            If Verilmeyenler Is Nothing Then
                Set Verilmeyenler = ws.Cells(i, 3)
            Else
                Set Verilmeyenler = Union(Verilmeyenler, ws.Cells(i, 3))
            End If
            ws.Cells(i, 3).Value = PlakaGrubu & PlakaHarfGrubu & SeriNo
        End If
    Next i

    If Not Verilmeyenler Is Nothing Then ' Verilmeyen plakaları alt alta sırala
        Verilmeyenler.Copy ws.Cells(3, 5)
    End If

    For i = 3 To LastRow
        SeriNo = ws.Cells(i, 3).Value
PlakaGrubu = Left(Cells(i, 4), 2)
PlakaHarfGrubu = SadeceHarfler(Cells(i, 4))
        If InStr(SeriNo, PlakaGrubu & PlakaHarfGrubu) > 0 Then
            ws.Cells(i, 3).Value = Format(Mid(SeriNo, 5), "000")
        End If
    Next i

    MsgBox "İşlem tamamlandı!", vbInformation
End Sub

Function SadeceHarfler(str As String) As String
    Dim i As Integer
    Dim karakter As String, sonuc As String

    sonuc = ""

    For i = 1 To Len(str)
        karakter = Mid(str, i, 1)
        If (karakter Like "[A-Za-z]") Then
            sonuc = sonuc & karakter
        End If
    Next i

    SadeceHarfler = sonuc
End Function

Function SadeceSayiAl(str As String) As String
    Dim i As Integer
    Dim karakter As String, sonuc As String

    sonuc = ""

    For i = 1 To Len(str)
        karakter = Mid(str, i, 1)
        If (IsNumeric(karakter)) Then
            sonuc = sonuc & karakter
        End If
    Next i

    SadeceSayiAl = sonuc
End Function
kod önce il grubunu belirler, sonra harf grubunu belirleyerek plakaları arar böylece il ve harf grubu değişsede istediğiniz gibi verilmeyen plakaları listeler.
Cevapla
#12
(05/03/2024, 23:24)atoykan yazdı: Plakadan bahsediyorsunuz. Plaka il kodu,tek harf, 3-4-5 rakam da olabilir, 2 harf , 3 harf de vs. Plaka ile ilgili her opsiyonu düşünmeniz gerekmez mi?

Hocam şöyle izah edersek örneğin 42 AA burası 001 ile başlayıp 42AA001 - 42 AA dan 999 olarak düşünüyoruz.
Yani 999 adet plaka verilmektedir.
42AA olan kısım bu seride sabit ve gözardı edebiliriz. Bize son kısım rakam gurubu burası şimdilik 3 haneli ### format bu olacak.
(şöyle ki: 42AA001,42AA002,............42AA999 da son bulacak. İlerleyen zamanlarda aradan boşa çıkan plakaları bulmak istiyoruz.)
Verilmeyen aradaki sayıları bulacak. Sayfada bir hücreye 42AA ibaresini veya başka yazabileceğimiz 42XX İbarelerini yazdığımızda o hücreyi referans göstererek (makro içinde olmaz ise daha iyi olacak.) bize verilmeyen listeyi oluştursun istiyoruz.

(09/03/2024, 11:37)atoykan yazdı: Kodu aşağıdaki gibi güncelleyin.
Sub PlakaKontrol()
    Dim ws As Worksheet
    Dim LastRow As Long, i As Long
    Dim SeriNo As String, PlakaGrubu As String, PlakaHarfGrubu As String
    Dim Plaka As Range, Verilmeyenler As Range

    Set ws = ThisWorkbook.Sheets("Sayfa1") ' Çalışma sayfasını tanımla

    LastRow = ws.Cells(ws.Rows.Count, "C").End(xlUp).Row ' Son satırı bul

    For i = 3 To LastRow
        SeriNo = ws.Cells(i, 3).Value ' Seri-999 değerini al
        PlakaGrubu = Left(Cells(i, 4), 2) ' plaka il gurubunu belirler
        PlakaHarfGrubu = SadeceHarfler(Cells(i, 4)) ' plaka harf grubunu belirler
   
        ' Plaka sütununda "99AL" & serino'yu ara
        Set Plaka = ws.Columns("DLol").Find(What:=PlakaGrubu & PlakaHarfGrubu & SeriNo, LookIn:=xlValues, LookAt:=xlWhole)

        If Plaka Is Nothing Then ' Eğer kayıt yoksa Verilmeyenler sütununa ekle
            If Verilmeyenler Is Nothing Then
                Set Verilmeyenler = ws.Cells(i, 3)
            Else
                Set Verilmeyenler = Union(Verilmeyenler, ws.Cells(i, 3))
            End If
            ws.Cells(i, 3).Value = PlakaGrubu & PlakaHarfGrubu & SeriNo
        End If
    Next i

    If Not Verilmeyenler Is Nothing Then ' Verilmeyen plakaları alt alta sırala
        Verilmeyenler.Copy ws.Cells(3, 5)
    End If

    For i = 3 To LastRow
        SeriNo = ws.Cells(i, 3).Value
PlakaGrubu = Left(Cells(i, 4), 2)
PlakaHarfGrubu = SadeceHarfler(Cells(i, 4))
        If InStr(SeriNo, PlakaGrubu & PlakaHarfGrubu) > 0 Then
            ws.Cells(i, 3).Value = Format(Mid(SeriNo, 5), "000")
        End If
    Next i

    MsgBox "İşlem tamamlandı!", vbInformation
End Sub

Function SadeceHarfler(str As String) As String
    Dim i As Integer
    Dim karakter As String, sonuc As String

    sonuc = ""

    For i = 1 To Len(str)
        karakter = Mid(str, i, 1)
        If (karakter Like "[A-Za-z]") Then
            sonuc = sonuc & karakter
        End If
    Next i

    SadeceHarfler = sonuc
End Function

Function SadeceSayiAl(str As String) As String
    Dim i As Integer
    Dim karakter As String, sonuc As String

    sonuc = ""

    For i = 1 To Len(str)
        karakter = Mid(str, i, 1)
        If (IsNumeric(karakter)) Then
            sonuc = sonuc & karakter
        End If
    Next i

    SadeceSayiAl = sonuc
End Function
kod önce il grubunu belirler, sonra harf grubunu belirleyerek plakaları arar böylece il ve harf grubu değişsede istediğiniz gibi verilmeyen plakaları listeler.

Sayın @atoykan hocam kodu deneyip bilgi vereceğim.
yyhy, 18-05-2009 tarihinden beri AccessTr.neT üyesidir.
Son Düzenleme: 09/03/2024, 22:06, Düzenleyen: yyhy.
Cevapla

Bir hesap oluşturun veya yorum yapmak için giriş yapın

Yorum yapmak için üye olmanız gerekiyor

ya da
Task