• DİKKAT

    DOSYA İndirmek/Yüklemek için ÜCRETLİ ALTIN ÜYELİK Gereklidir!
    Altın Üyelik Hakkında Bilgi

excelde eksik sayı bulma yardım

Katılım
13 Ocak 2007
Mesajlar
17
Excel Vers. ve Dili
2007 TR
2003 TR
arkadaşlar sütunlardaki ard arda olması gereken sayıların arasındaki eksik rakamları otomatik bulmak için ne yapabilirim yardımcı olurmusunuz.
 
Sayılarınız A1'den başlıyorsa B2 hücresine =A2-A1 yazın ve aşağı çekerek B sütunundaki diğer hücrelere kopyalayın. Düzenli giden sayıların farkı hep 1 olacak, düzensiz gidenlerin farkları 2, 3, 5 gibi sayılar olacaktır.

Daha dikkat çekici bir sonuç almak isterseniz formülü =(A2-A1)^10 şeklinde yazabilirsiniz.

Örnek dosya ektedir.
 
herhalde ben tam anlatamadım, öyle bir makro olacakki sorgulama yaptığımızda sonuç olarak bize arada girilmeyen eksik rakamları gösterecek, yani 1 ile 3000 arasında mesela girilmeyen 20-215-2587-2698 gibi rakamları gösterecek
 
Son düzenleme:
Aşağıdaki kodu deneyin. Eksik olanları B sütununa listeler.

Kod:
Sub eksikleribul()
For a = 1 To 3000
say = WorksheetFunction.CountIf([a:a], a)
If say = 0 Then
c = c + 1
Cells(c, "b") = a
End If
Next
End Sub
 
Selamlar,

Alternatif olarak aşağıdaki koduda kullanabilirsiniz. C sütununa listeleme yapar.

Not: Sn. leventm sizin önerdiğiniz kodu denedim sanki biraz yavaş listeledi.

Kod:
Sub EKSİK_DEĞERLERİ_LİSTELE()
    Columns(3) = ""
    Satır = 1
    For X = 1 To [A65536].End(3).Row
    Fark = Cells(X + 1, 1) - Cells(X, 1)
    If Fark > 1 Then
    For Y = 1 To Fark - 1
    Cells(Satır, 3) = Cells(X, 1) + Y
    Satır = Satır + 1
    Next
    End If
    Next
End Sub
 
Son düzenleme:
Not: Sn. leventm sizin önerdiğiniz kodu denedim sanki biraz yavaş listeledi.

Sankisi fazla epeyce yavaş işlem yapıyor. :) Sizin öneriniz çok daha hızlı tebrikler, yalnız ikinci döngüyü neden kullandığınızı anlayamadım. Bana ikinci döngüsüzde çözülür gibi geldi.
 
Selamlar,

Sn. leventm,

Arkadaşımızın verdiği örnekte eğer aralarda boş hücre varsa sizin önerdiğiniz kod daha kullanışlı. Benim önerdiğim kod bu durumda sağlıklı çalışmıyor. (Bu ince detayda ustalık farkı olsun artık.) Elinize sağlık.

Ayrıca arkadaşımızın örneğinde numaralar sıralı değilse sizin önerdiğiniz kodu alternatif olarak aşağıdaki şekilde kullanırsak daha iyi olacağı kanısındayım.

Kod:
Sub Eksikleri_Listele()
    Columns(2) = ""
    En_Küçük = WorksheetFunction.Min(Columns(1))
    En_Büyük = WorksheetFunction.Max(Columns(1))
    For X = En_Küçük To En_Büyük
    Say = WorksheetFunction.CountIf(Columns(1), X)
    If Say = 0 Then
    Satır = Satır + 1
    Cells(Satır, "B") = X
    End If
    Next
End Sub
 
Son düzenleme:
......Arkadaşımızın verdiği örnekte eğer aralarda boş hücre varsa sizin önerdiğiniz kod daha kullanışlı. Benim önerdiğim kod bu durumda sağlıklı çalışmıyor.........

Açıkçası ben kodu önerirken bu ihtimali düşünmemiştim.

Benim önerim kesin sonuç versede çok yavaş. Bence bu konu üzerinde biraz daha kafa yorup, her şekilde doğru sonuç veren hızlı bir kod oluşturmayı deneyelim ve sonuçlarını burada paylaşalım.

(Bu ince detayda ustalık farkı olsun artık.) Elinize sağlık.

Rica ederim. Ustalık haddimize değil.

Not: Özellikle forumumuzdaki usta, üstad, hocam gibi kavramları yakından takip edip, bundan malzeme ve görev çıkartan ve bu göreve istinaden kendi platformlarında bol reyting alan başlıklar açarak konuyu tartışmaya açan kişilere yine malzeme verdik, hayırlı olsun. :)

Siz lütfen üzerinize alınmayın, sözlerimin sizinle hiç bir alakası yoktur.
 
Aşağıdaki kodun çalışma hızı fena sayılmaz.

Kod:
Sub listele()
On Error Resume Next
For a = 1 To 3000
If WorksheetFunction.Match(a, [a:a], 0) = 0 Then
c = c + 1
Cells(c, "c") = a
End If
Next
End Sub
 
Selamlar,

Evet leventm bey son önerdiğiniz kod gerçekten daha hızlı çalışıyor elinize sağlık.
 
ustalarım çok sağolun, şimdi gördüm çok teşekkürler emekleriniz için
 
Son düzenleme:
ustam ben kodu ekleyemedim, nerede yanlış yaptım bilmiyorum, bu konudada daha çok acemiyim yardımcı olabilirmisiniz.
 
ustam çalışmasına güzel çalışıyorda, ilk sayıyı yani 1 i yazmayınca 1 i eksik olarak göstermiyor, bi el atsan, teşekkürler
 
Aşağıdaki kodu deneyin.

Kod:
Sub listele()
On Error Resume Next
[c:c].ClearContents
For a = 1 To [a65536].End(3)
If WorksheetFunction.Match(a, [a:a], 0) = 0 Then
c = c + 1
Cells(c, "c") = a
End If
Next
End Sub
 
teşekkürler ustam ellerinize sağlık klavyeniz dert görmesin
 
ustam bu makronun tüm sayfalarda çalışması için ne yapmam gerekiyor, forumda aradım yapılması gerekenleri yapıyorum ancak diğer sayfalarda gösteremedim makroyu yardım ederseniz sevinirim, teşekkürler
 
ustam sana zahmet olacak ama ekli listedeki formata göre b sütunundaki eksik sayıları listeleyecek bir makro yapılabilirmi acaba, a sütunundaki TÜR kısmına göre ayrı sütunlara listeleyecek şekilde, mesela tür 1'i E TÜR 2'yi F, TÜR 3'ü G sütununda listelesin istiyorum, birde çiftleride listelerse çok iyi olur, şimdiden teşekkürler
 
Son düzenleme:
ustam sana zahmet olacak ama ekli listedeki formata göre b sütunundaki eksik sayıları listeleyecek bir makro yapılabilirmi
 
Geri
Üst