Otomatik Sayı numarası verdirme.

Katılım
8 Ekim 2015
Mesajlar
17
Excel Vers. ve Dili
2010 Türkçe
Altın Üyelik Bitiş Tarihi
21-09-2024
Merhabalar,
2020-001-01
2020-001-02
2020-001-03
2020-001-04
2020-001-05
2020-001-06
2020-001-07
2020-001-08
2020-001-09
2020-001-10
10 dan sonra
2020-002-01 diye başlayıp sonsuza kadar devam edecek makroya ihtiyacım var. Yanlız yeni kayıt eklediğimde Refakatçı koşul kısmı seçili olunca
Örneğin hastayı 2020-001-05 diye kayıt ettik
Refakatçiyi kayıt edeceğimiz zaman 2020-001-05-R1

eğer ikincibir refakatçisi var 2020-001-05-R2
diye refakatçide en fazla 10-15 kişi şeklinde bir makroya ihtiyacım var, şimdiden çok teşekkür ederim.
 
Katılım
24 Nisan 2005
Mesajlar
3,671
Excel Vers. ve Dili
Office 2016 EN 64 Bit
Altın Üyelik Bitiş Tarihi
25/05/2022
Bu konudaki 6. mesajı numarator fonksiyonunu inceleyebilirsiniz.

 
Katılım
8 Ekim 2015
Mesajlar
17
Excel Vers. ve Dili
2010 Türkçe
Altın Üyelik Bitiş Tarihi
21-09-2024
Asri bey merhabalar, öncelikle teşekkür ederim lakin benim istediğim bu değil, bu söylediğiniz toplu atıyor ben bir bir gelen hastalar işin verip istatistiğe kayıt etmesi için istemiştim.
 
Katılım
24 Nisan 2005
Mesajlar
3,671
Excel Vers. ve Dili
Office 2016 EN 64 Bit
Altın Üyelik Bitiş Tarihi
25/05/2022
Asri bey merhabalar, öncelikle teşekkür ederim lakin benim istediğim bu değil, bu söylediğiniz toplu atıyor ben bir bir gelen hastalar işin verip istatistiğe kayıt etmesi için istemiştim.
Bir defa çalıştırırsanız bir defa artar.
Döngü örnek olması içindi.
 
Katılım
8 Ekim 2015
Mesajlar
17
Excel Vers. ve Dili
2010 Türkçe
Altın Üyelik Bitiş Tarihi
21-09-2024
Denedim maalesef olmuyor. Anlamadım nerde hata yaptığımı 🙁
 
Katılım
24 Nisan 2005
Mesajlar
3,671
Excel Vers. ve Dili
Office 2016 EN 64 Bit
Altın Üyelik Bitiş Tarihi
25/05/2022
Bu şekilde deneyebilirsiniz.


C#:
'asriakdeniz@gmail.com - www.asriakdeniz.com
Dim veri() As String
Dim adet As Long
Dim elde, bakilansayi As Boolean

'Arttırılacak harfler
Const harfler As String = "ABCDEFGĞHIİJKLMNOÖPRSŞTUÜXWVYZ"

'Arttırılacak sayılar.
Const sayilar As String = "0123456789"

'Artışa dahil olmayan karakterler
Const dahildegil As String = ".-/R"

'sayılar 01 aktif edililir ise ikili sayı sisteminde oluşturur
'Const sayilar As String = "01"

Sub hastakayit()
    gec = Range("G13").Value
    sonu = Right(gec, Len(gec) - InStrRev(gec, "-"))
    basi = Left(gec, InStrRev(gec, "-"))
    If sonu = "10" Then
       numarastr = basi & "99"
       Range("G13").Value = numarator(numarastr)
       Range("G13").Value = numarator(Range("G13").Value)
    Else
       numarastr = gec
       Range("G13").Value = numarator(numarastr)
    End If    
End Sub

Sub refakatcikayit()
    Range("I13").Value = numarator(Range("I13").Value)
End Sub


Function numarator(numara) As String
   numara = StrReverse(numara)
   adet = Len(numara)
   ReDim Preserve veri(1 To adet)
   For i = 1 To adet
      veri(i) = Mid(numara, i, 1)
   Next i

   elde = False
   For j = LBound(veri) To UBound(veri)
      harf = veri(j)
      If InStr(dahildegil, harf) > 0 Then GoTo son
      bakilansayi = sayimi(harf)
      If bakilansayi Then
         veri(j) = sayiarttir(harf)
      Else
         veri(j) = harfarttir(harf)
      End If
     
      If elde = False Then
        Exit For
      End If
son:
   Next j
       
   For i = LBound(veri) To UBound(veri)
      veristr = veristr & veri(i)
   Next i

   veristr = StrReverse(veristr)
   If Left(veristr, 1) = Left(sayilar, 1) And elde Then
      numarator = "1" & veristr
   ElseIf Left(veristr, 1) = Left(harfler, 1) And elde Then
      numarator = Left(harfler, 1) & veristr
   Else
      numarator = veristr
   End If
End Function

Function harfarttir(harfstr) As String
    mevcutsira = InStr(harfler, harfstr)
    yenisira = Mid(harfler, mevcutsira + 1, 1)
    If yenisira = "" Then
       harfarttir = Mid(harfler, 1, 1)
       elde = True
    Else
       harfarttir = yenisira
       elde = False
    End If
End Function

Function sayiarttir(sayistr) As String
    mevcutsira = InStr(sayilar, sayistr)
    yenisira = Mid(sayilar, mevcutsira + 1, 1)
    If yenisira = "" Then
       sayiarttir = Mid(sayilar, 1, 1)
       elde = True
    Else
       sayiarttir = yenisira
       elde = False
    End If
End Function


Function sayimi(sadecesayistr)
  liste = "0123456789"
  For k = 1 To Len(sadecesayistr)
    harf = Mid(sadecesayistr, k, 1)
    If InStr(liste, harf) = 0 Then
       sayimi = False
       Exit Function
    End If
  Next k
  sayimi = True
End Function
 
Son düzenleme:
Katılım
24 Nisan 2005
Mesajlar
3,671
Excel Vers. ve Dili
Office 2016 EN 64 Bit
Altın Üyelik Bitiş Tarihi
25/05/2022
Yeni farkettim. Gönderdiğim dosya ve kod 2020-001-99 dan sonra 2020-002-00 oluyor.
Siz 2020-001-10 dan sonra 2020-002-01 olmasını istemişsiniz.

Dosya değil ancak kod bu şekilde düzenlendi.
 
Katılım
8 Ekim 2015
Mesajlar
17
Excel Vers. ve Dili
2010 Türkçe
Altın Üyelik Bitiş Tarihi
21-09-2024
Yeni farkettim. Gönderdiğim dosya ve kod 2020-001-99 dan sonra 2020-002-00 oluyor.
Siz 2020-001-10 dan sonra 2020-002-01 olmasını istemişsiniz.

Dosya değil ancak kod bu şekilde düzenlendi.
Hocam Ellerinize sağlık elleriniz dert görmesin inşAllah saygı ve hürmetlerimi sunarım
 
Üst