Eksik olan sayıyı atasın...

aliakgul

Altın Üye
Katılım
9 Mayıs 2005
Mesajlar
404
Excel Vers. ve Dili
Ofis 2016 TR 64 Bit
Altın Üyelik Bitiş Tarihi
03-08-2025
Merhaba arkadaşlar,
Resimdeki biçimde kitap listemiz var. Barkod no bölümüne en son kaydedilmiş kitabın nosunun bir üst değerini veriyoruz.Ancak bazen kaybolan kitapları kayıtdan düşüyoruz.Sıraya göre değil de, arada boş olan numaraları doldurmak istiyoruz.
*(A:A) sütununda 1.........n sıralamasında nolar var.
*Bu nolar alfabetik dizilimde değil.Yani karma.
*1........n diziliminde aralarda atlamalar var.
*Örneğin: 1-2-3-4-5-6-7-8-9-10 dizilimi
2-5-6-1-9-3-7-4-10-8 şeklinde.Ve diyelim ki, 6 nolu kitabı sildik.
*(A:A) aralığında 1'den itibaren arasın ve boş olan (örnekte 6) sırayı değer olarak atasın.
İnşallah yeterince açık anlatabilmişimdir.
Teşekkür ederim...
 

Ekli dosyalar

fedeal

Banned
Katılım
29 Mayıs 2008
Mesajlar
1,985
Excel Vers. ve Dili
2003 tr
resimden yardımcı olmak zor ama aklıma şöyle bir çözüm geldi.

Sub sırala()
SDS = Sheets("Sayfa1").Range("B65536").End(xlUp).Row
SBS = SDS + 1
For i = 2 To SDS
Sheets("Sayfa1").Range("A" & i) = Application.WorksheetFunction.Max(Sheets("Sayfa1").Range("A:A")) + 1
Next
End Sub

a sütunundaki sayıları silin makroyu çalıştırın tekrar sıralı no verecektir formdan butonla siliyorsanız sil kodunun arkasına sütundaki sayıları sildirip bu kodla tekrar numara verebiliriz. örnek dosya olsa daha iyi bir yanıt verebilirdik.(sayfa ismini degiştirin.)
 

fedeal

Banned
Katılım
29 Mayıs 2008
Mesajlar
1,985
Excel Vers. ve Dili
2003 tr
şu daha iyi oldu

Sub sırala()
Sheets("Sayfa1").Range("A2:A65536").Select
Selection.ClearContents
SDS = Sheets("Sayfa1").Range("B65536").End(xlUp).Row
For i = 2 To SDS
Sheets("Sayfa1").Range("A" & i) = Application.WorksheetFunction.Max(Sheets("Sayfa1").Range("A:A")) + 1
Next
End Sub
 

aliakgul

Altın Üye
Katılım
9 Mayıs 2005
Mesajlar
404
Excel Vers. ve Dili
Ofis 2016 TR 64 Bit
Altın Üyelik Bitiş Tarihi
03-08-2025
Merhaba,
Sanırım yanlış anlaşılmış, yada ben tam anlatamadım.Barkod no olarak kayıtlı sayılar, ilgili kitabın kitaplık kayıt numarasıdır.Yani kitabın üzerine de işlenmiş durumda.Onu değiştiremeyiz. Bizim yapmaya çalıştığımız şu:
Diyelim ki 20 kitap kaydettik ve bunları 1,2,3,.....20 diye numaralandırdık ve işledik.Zaman içinde 12 numaralı kitap kayıttan düşüldü ve sildik. Yapacağımız makro, kayıtlı barkod noları 1'den , kayıtlı en büyük barkod nosuna kadar tarasın.Arada atlanmış yani silinmiş olanı bulunca (bu örnekde 12'dir) o sayıyı ilk yeni yapılacak kitap kaydında barkod no olarak atasın.
 

fedeal

Banned
Katılım
29 Mayıs 2008
Mesajlar
1,985
Excel Vers. ve Dili
2003 tr
userformdanmı atıyorsunuz bu kayıtları örnek bir dosya ekleyebilirmisiniz.
 
Katılım
5 Kasım 2007
Mesajlar
444
Excel Vers. ve Dili
2003 TR
Sn. aliakgul ekli dosyayı inceleyiniz. Sanırım en azından mantığı doğru.
Gerekli düzenlemeleri yaparsınız. Kolay gelsin.
 

Ekli dosyalar

Son düzenleme:

aliakgul

Altın Üye
Katılım
9 Mayıs 2005
Mesajlar
404
Excel Vers. ve Dili
Ofis 2016 TR 64 Bit
Altın Üyelik Bitiş Tarihi
03-08-2025
Sayın Meslan,
Aslında yapmaya çalıştığım birebir bu.Teşekkür ederim.Şu anda çalışmanızı inceliyorum. Hemen sormak istiyorum:
*Her çalışma sayfası altına yazdığınız bu satırın işlevi nedir?
Kod:
 Option Explicit
*Atanan sayılar "metin olarak saklanan sayı" biçiminde. Bunu normal sayı biçiminde olacak şekile nasıl uyarlayacağız?
*Barkod sütunundaki sayılar karışık halde.Yani alfabetik sıralı değil. Eğer bu aralıktaki sayıların en büyüğü ilk başta yer alırsa, önce bunun bir fazlası olan değer atanıyor, daha sonraki atamalarda aralardaki boş olanlar atanıyor.
İlk etapta dikkatimi çekenler bunlar. Teşekkür ederim, kolay gelsin...
 
Katılım
5 Kasım 2007
Mesajlar
444
Excel Vers. ve Dili
2003 TR
Merhaba
Option Explicit bu değişkenleri tanımlama mecburiyetini ifade eder. Bu kod varken bir değişkeni tanımlamadan kullanın hata verir. Bu ifadeyi silin hata vermez. Bunu deneyerek daha iyi anlayabilirsiniz.

Ben bunu başlarındaki sıfırların görünmesi için metin yaptım.
Eğer barkodları rakam olarak kaydetmek istiyorsanız Cstr deyimlerini ve başındaki ve sonundaki parantezleri siliniz. Rakamların sıralı veya sırasız olması fark etmez. Kod yine çalışır.
 

aliakgul

Altın Üye
Katılım
9 Mayıs 2005
Mesajlar
404
Excel Vers. ve Dili
Ofis 2016 TR 64 Bit
Altın Üyelik Bitiş Tarihi
03-08-2025
Sayın Meslan,
Şu anda tek husus kaldı.
Mevcud dizinin en büyük değeri eğer ilk başta ise önce mutlaka en büyük barkod nonun bir fazlasının atamasını yapıyor, daha sonra arada boş olanların ataması yapılıyor.Ancak barkod no verip kitap adına göre sıralama yapıldığında, en büyük barkod nolu kitap yine en başa gelebilir.Bu durumda hep bir büyüğün ataması yapılacak, boşlar atanmayacak.
 
Katılım
5 Kasım 2007
Mesajlar
444
Excel Vers. ve Dili
2003 TR
Sn. alibey şunu bir denermisiniz.
Kod:
Private Sub UserForm_Activate()
enkucukbos = 999999
For i = 1 To [a65536].End(3).Row
 bosolan = 1
If i = 1 Then GoTo 1
bosolan = CDbl(Cells(i, 1) + 1)
1: If WorksheetFunction.CountIf([A:A], bosolan) <= 0 Then
bosolan = bosolan
If enkucukbos > bosolan Then enkucukbos = bosolan
End If
Next
TextBox1 = Format(CStr(enkucukbos), "000")
End Sub
 

aliakgul

Altın Üye
Katılım
9 Mayıs 2005
Mesajlar
404
Excel Vers. ve Dili
Ofis 2016 TR 64 Bit
Altın Üyelik Bitiş Tarihi
03-08-2025
Kodları uyguladım.Öncekiler de form altında pasif bir biçimde duruyor,silmedim.Sonucu ifade etmekte zorlanacağımı bildiğim için aynen ekliyorum.
A sütunundaki değerler A-Z diziliminde iken otuz hatta kırklara kadar no eklettirin.Daha sonra aynı işlemi Z-A diziliminde yapın.Durumu daha iyi anlayacaksınız...
Sanırım eksikleri denetler ve atamasını yaparken;
1,11,12,13....19,2,21,22,23,24.....29,3,31,32,34,35.....39,4, şeklinde yapıyor...
 
Katılım
5 Kasım 2007
Mesajlar
444
Excel Vers. ve Dili
2003 TR
Siz A kolonunu küçükten büyüğe sıramaya mı çalışıyorsunuz?
 

aliakgul

Altın Üye
Katılım
9 Mayıs 2005
Mesajlar
404
Excel Vers. ve Dili
Ofis 2016 TR 64 Bit
Altın Üyelik Bitiş Tarihi
03-08-2025
Hayır, ben kitap adlarını A-Z diziliminde sıralıyorum. Ancak en son en büyük barkod no ile kaydedilen kitabınadı alfabetik olarak en başa rastgelirse, bu durumda kodlar önce
en büyük no+1 atamasını yapıyor daha sonra aralarda kalanlara bakıyor.Her defasında kaydedilen alfabetik olarak başa gelse döngü devam edip gidecek...
 
Katılım
5 Kasım 2007
Mesajlar
444
Excel Vers. ve Dili
2003 TR
Sn.Ali Bey Dosyayı yeniledim. Başında 0 olmadan kayıt yapıyor. Artan Şekilde de sıralama yapıyor. İnceleyiniz.
 
Katılım
5 Kasım 2007
Mesajlar
444
Excel Vers. ve Dili
2003 TR
Şu durumda boş olan en küçük sayıyı bulup yazıyor. Bir deneyin. Olmuyorsa yapmaya çalışalım.
Belkide biribirimizi anlamakta zorluk çekiyor olabiliriz. Selamlar.
 
Katılım
27 Temmuz 2004
Mesajlar
719
Excel Vers. ve Dili
Excel 2003 Tr
Bu haliyle en küçük boş olan değeri verecektir, dener misiniz?
Kod:
For i = 1 To 999
    If WorksheetFunction.CountIf([A:A], i) = 0 Then
    TextBox1 = Format(i, "000")
    Exit Sub
    End If
Next
 

aliakgul

Altın Üye
Katılım
9 Mayıs 2005
Mesajlar
404
Excel Vers. ve Dili
Ofis 2016 TR 64 Bit
Altın Üyelik Bitiş Tarihi
03-08-2025
Merhaba,
Sayın janveljan, kodlarınızı deneme fırsatı buldum.Son derece olumlu sonuç aldım.Kullanım sürecinde herhangi bir sorun olursa bildiririm.

Sn.Ali Bey Dosyayı yeniledim. Başında 0 olmadan kayıt yapıyor. Artan Şekilde de sıralama yapıyor. İnceleyiniz.
Sayın meslan,
Sizin son düzenlediğiniz belgeyi yeni inceliyorum.Sonucu biraz sonra bildiririm.
Her ikinizin de eline ,emeğine sağlık...Teşekkür ederim.
 

aliakgul

Altın Üye
Katılım
9 Mayıs 2005
Mesajlar
404
Excel Vers. ve Dili
Ofis 2016 TR 64 Bit
Altın Üyelik Bitiş Tarihi
03-08-2025
Sayın meslan,
A-Z sıralamasını yaptıran son satırdaki kodları iptal edince sayın janveljan'ın kodlarında olduğu gibi amaca ulaşmış oldum.Tekrar tekrar her ikinize de teşekkür ediyorum.Elinize, emeğinize sağlık.
 
Üst