Excel Forum
ALTIN ÜYELİK Hakkında Bilgi


Geri Git   Excel Forum > Diğer Yazılımlar > Yazılım ve Donanım
Atatürk
Şifremi Unuttum

DUYURU SİSTEMİ / REKLAM PANOSU

Yazılım ve Donanım Yazılım ve Donanım konuları ve diğer kullanıcılara tavsiye etmek istediğiniz programların açıklamaları.

Özel Arama


Yanıtla
 
Paylaş Konu Araçları Görünüm Modları
Eski 02-12-2017, 20:51   #1
asri
Altın Üye
 
Giriş: 24/04/2005
Şehir: Istanbul
Mesaj: 2,544
Excel Vers. ve Dili:
Office 2016 TR 64 Bit
Varsayılan Karışık numaratör, numara arttırıcı fonksiyonu

Yazacağım bir program için numaratöre ihtiyacım oldu. Aşağıdaki şekilde bir fonksiyon yazdım.
sayılar ve harfler karışık numarayı numaratör olarak kullanabilirsiniz.

Harfler ve sayilar metin değişkenlerinin içeriklerini istediğiniz formata göre değiştirebilirsiniz.
Numaratör arttırma işlemi yapılırken bu listelerdeki sıralama dikkate alınarak yapılmaktadır.
Bu neden ile bu listelerdeki Türkçe karakterleri yada İngilizce karakterlri çıkararak numaratörü sınırlayabilirsiniz.

Public Const sayilar As String = "02468" sayilar değişkenini bu şekilde tanımladığınızda iki şer sayan bir numaratör olacaktır

Örneğin;
A1C2D8 gibi bir metni 4 defa işleme aldığınızda , aşağıdaki sonuç çıkacaktır
A1C2D9
A1C2E0
A1C2D1
A1C2D2

Sadece sayı, yada sadece harf içerikli numaratör olarak da kullanabilirsiniz.
1000
1001
1002

ABCD
ABCE
ABCF

Bu yazdığım numaratör sınırsızdır. Yani en azından bir string değişkenin sınırları kadar
sayilar ve karakterleri değiştirerek farklı numaratör seçenekleri oluşturabilir siniz.

Gelitirmeye açık, umarım birilerinin işine yarar.


Kod: (Rahat kopyalayabilmeniz için tüm kodu seçmenizi sağlar)
Dim veri() As String
Dim adet As Long
Dim elde, bakilansayi As Boolean
Const harfler As String = "ABCDEFGĞHIİJKLMNOÖPRSŞTUÜXWVYZ"
Const sayilar As String = "0123456789"
'Const sayilar As String = "01"
Const dahildegil As String = ".-/"
   
   
Sub deneme()
   Range("A:A").Clear
   numarastr = "0-0-0-0-1"
   
   For Z = 1 To 100
     numarastr = numarator(numarastr)
     Cells(Z, 1).Value = "'" & numarastr
   Next Z
   
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
__________________
www.asriakdeniz.com

Bu mesaj en son " 03-12-2017 " tarihinde saat 17:08 itibariyle asri tarafından düzenlenmiştir....
asri Çevrimdışı   Alıntı Yaparak Cevapla
Eski 03-12-2017, 17:06   #2
asri
Altın Üye
 
Giriş: 24/04/2005
Şehir: Istanbul
Mesaj: 2,544
Excel Vers. ve Dili:
Office 2016 TR 64 Bit
Varsayılan

Güncelleme;

Fonksiyona artışa dahil olmayacak karakter seçimi eklendi.
0-0-0-9 gibi bir numara belirlendiğinde.

Numarator bunu aşağıdaki şekilde arttıracaktır.

0-0-1-0
0-0-1-1
0-0-1-2
.
9-9-9-9

* Farkında olmadan aslında numaratör ile beraber aynı zamanda bir kombinasyon fonksiyonu da yazmışım

Sayılar verisini aşağıdaki şekilde tanımlayıp.

Const sayilar As String = "01"

numaraya "00001" verdiğinizde
0 ve 1 in kombinasyonunu yapmaktadır.
Aslında bu fonksiyonun tam olarak neler yapabileceğini test edemedim.
__________________
www.asriakdeniz.com
asri Çevrimdışı   Alıntı Yaparak Cevapla
Yanıtla


Konu Araçları
Görünüm Modları

Gönderme Kuralları
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is Açık
SimgelerAçık
[IMG] kodu Açık
HTML kodu Kapalı


Saat 03:50


Bu forum Elit NET - www.elitnet.com.tr tarafından sunulmaktadır.

Excel Eğitimi - Mobil Uygulama - Çorlu - Çorlu Web Tasarım -- Beylikdüzü mali müşavir - Lingerie - Dyeing Machine - Karton Bardak- Çorlu Dil Konuşma Terapisti- Çorlu Özel Eğitim- Site Yönetimi- Pronet Tekirdağ- Çorlu Kamera- Pronet Edirne- Pronet Çorlu- Çorlu Araç Takip- Çorlu Su Arıtma- Gebze Emlak- Rampa- Rotary- Çorlu İnternet Sitesi- Çorlu Sürücü Kursu- Çorlu Sürücü Kursu- Şişli Avukat- Edirne Serbest Muhasebeci- Çorlu Etüt- İstanbul Botanik- Çorlu Sigorta- Kağıt Bardak- Kaplan Tekstil- Çorlu Perde- Çorlu Havuz- Makina- Danışmazlar-
Powered by vBulletin Version 3.7.2
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
Advertisement System V2.6 By   Branden