15 Mayıs 2014 Perşembe

Benzersiz Sayılar Üretmek - LOTO RAKAMLARI OLUŞTURMAK


AYNI SAYI TEKRARLANMAYACAK ŞEKİLDE İSTENİLEN ARALIKTA BENZERSİZ SAYI ÜRETMEK


1-49 sayısal loto



A

B

C

D

1





2





3



3

=BÜYÜK(SATIR($1:$49)*DEĞİL(EĞERSAY($C$2:C2;SATIR($1:$49)));RASTGELEARADA(1;50-SATIR(A1)))

4



49

=BÜYÜK(SATIR($1:$49)*DEĞİL(EĞERSAY($C$2:C3;SATIR($1:$49)));RASTGELEARADA(1;50-SATIR(A2)))

5



24

=BÜYÜK(SATIR($1:$49)*DEĞİL(EĞERSAY($C$2:C4;SATIR($1:$49)));RASTGELEARADA(1;50-SATIR(A3)))

6



12

=BÜYÜK(SATIR($1:$49)*DEĞİL(EĞERSAY($C$2:C5;SATIR($1:$49)));RASTGELEARADA(1;50-SATIR(A4)))

7



2

=BÜYÜK(SATIR($1:$49)*DEĞİL(EĞERSAY($C$2:C6;SATIR($1:$49)));RASTGELEARADA(1;50-SATIR(A5)))

8



40

=BÜYÜK(SATIR($1:$49)*DEĞİL(EĞERSAY($C$2:C7;SATIR($1:$49)));RASTGELEARADA(1;50-SATIR(A6)))

1-80 10 numara


A

B

C

D

1





2





3



32

=BÜYÜK(SATIR($1:$80)*DEĞİL(EĞERSAY($C$2:C2;SATIR($1:$80)));RASTGELEARADA(1;81-SATIR(A1)))

4



59

=BÜYÜK(SATIR($1:$80)*DEĞİL(EĞERSAY($C$2:C3;SATIR($1:$80)));RASTGELEARADA(1;81-SATIR(A2)))

5



27

=BÜYÜK(SATIR($1:$80)*DEĞİL(EĞERSAY($C$2:C4;SATIR($1:$80)));RASTGELEARADA(1;81-SATIR(A3)))

6



37

=BÜYÜK(SATIR($1:$80)*DEĞİL(EĞERSAY($C$2:C5;SATIR($1:$80)));RASTGELEARADA(1;81-SATIR(A4)))

7



34

=BÜYÜK(SATIR($1:$80)*DEĞİL(EĞERSAY($C$2:C6;SATIR($1:$80)));RASTGELEARADA(1;81-SATIR(A5)))

8



6

=BÜYÜK(SATIR($1:$80)*DEĞİL(EĞERSAY($C$2:C7;SATIR($1:$80)));RASTGELEARADA(1;81-SATIR(A6)))

9



47

=BÜYÜK(SATIR($1:$80)*DEĞİL(EĞERSAY($C$2:C8;SATIR($1:$80)));RASTGELEARADA(1;81-SATIR(A7)))

10



19

=BÜYÜK(SATIR($1:$80)*DEĞİL(EĞERSAY($C$2:C9;SATIR($1:$80)));RASTGELEARADA(1;81-SATIR(A8)))

11



55

=BÜYÜK(SATIR($1:$80)*DEĞİL(EĞERSAY($C$2:C10;SATIR($1:$80)));RASTGELEARADA(1;81-SATIR(A9)))

12



15

=BÜYÜK(SATIR($1:$80)*DEĞİL(EĞERSAY($C$2:C11;SATIR($1:$80)));RASTGELEARADA(1;81-SATIR(A10)))
Yeni yeni rakamlar üretmek için F9 a bas,

Yukarıdan formülü kopyaladıktan sonra hücreye çift tıklayıp ctrl + shift +enter a bas


ADIMLAR


DEĞİL() : mantıksal sınamanızın sonucu doğru ise yanlışa yanlış ise doğruya çevirir.

BÜYÜK(aralık;k) : belirli bir sayı dizisi içindeki k. büyük sayıyı verir.

RASTGELEARADA(alt;üst) : vereceğiniz alt ve üst değerleri arasında random sayı üretir. (alt-üst dahil)

SATIR(başvuru) :  başvurunun satır numarasını döndürür bu hesaplamada satır fonksiyonunu kullanarak 1 den 49 a kadar giden bir sayı dizisi oluşturacağız,


Diziler formülleri için ctrl + shift +enter a basmayı unutmamak gerekiyor.


=BÜYÜK(SATIR($1:$49)*DEĞİL(EĞERSAY($C$2:C2;SATIR($1:$49)));RASTGELEARADA(1;50-SATIR(A1)))

Formülü kopyalayıp bir hücreye yapıştırdığınızda değiştireceğiniz tek kısım mavi ile yazılı olan $C$2:C2 hücresi, formülü yapıştırdığınız hücrenin bir üst hücresi olmalı, sondaki A1 hücreye yapışınca değişirse orayı tekrar A1 olarak düzeltelim.


Önemli: formülü kopyalayıp yapıştırdığınızda hata verecek ve #SAYI! Olarak görünecek çünkü bu bir dizi formülü, hücreye çift tıklayıp ctrl + shift +enter ile formülü dizi haline döndürmeniz gerekiyor.

Daha sonra formülü tutup aşağıya doğru çekerseniz  çektiğiniz hücre sayısı kadar benzersiz sayılar ürettiğini göreceksiniz.


Şimdi adım adım formülü açıklamaya çalışalım, öncelikle anlaşılır olması için  1 ile 10 arasındaki sayı tablosunda benzersiz sayılar seçelim, daha sonra istenilen sayı grubunu kolayla uygulayabiliriz,

1-49 sayısal loto

1-80 10 numara gibi



A
B
C
D
1
2
3
3
=BÜYÜK(SATIR($1:$10)*DEĞİL(EĞERSAY($C$2:C2;SATIR($1:$10)));RASTGELEARADA(1;11-SATIR(A1)))
4
10
=BÜYÜK(SATIR($1:$10)*DEĞİL(EĞERSAY($C$2:C3;SATIR($1:$10)));RASTGELEARADA(1;11-SATIR(A2)))
5
4
=BÜYÜK(SATIR($1:$10)*DEĞİL(EĞERSAY($C$2:C4;SATIR($1:$10)));RASTGELEARADA(1;11-SATIR(A3)))
6
6
=BÜYÜK(SATIR($1:$10)*DEĞİL(EĞERSAY($C$2:C5;SATIR($1:$10)));RASTGELEARADA(1;11-SATIR(A4)))
7
9
=BÜYÜK(SATIR($1:$10)*DEĞİL(EĞERSAY($C$2:C6;SATIR($1:$10)));RASTGELEARADA(1;11-SATIR(A5)))
8
2
=BÜYÜK(SATIR($1:$10)*DEĞİL(EĞERSAY($C$2:C7;SATIR($1:$10)));RASTGELEARADA(1;11-SATIR(A6)))
9
1
=BÜYÜK(SATIR($1:$10)*DEĞİL(EĞERSAY($C$2:C8;SATIR($1:$10)));RASTGELEARADA(1;11-SATIR(A7)))
10
8
=BÜYÜK(SATIR($1:$10)*DEĞİL(EĞERSAY($C$2:C9;SATIR($1:$10)));RASTGELEARADA(1;11-SATIR(A8)))
11
5
=BÜYÜK(SATIR($1:$10)*DEĞİL(EĞERSAY($C$2:C10;SATIR($1:$10)));RASTGELEARADA(1;11-SATIR(A9)))
12
7
=BÜYÜK(SATIR($1:$10)*DEĞİL(EĞERSAY($C$2:C11;SATIR($1:$10)));RASTGELEARADA(1;11-SATIR(A10)))







·         SATIR($1:$10): Burada 1 den 10 a kadar sayılardan oluşan bir sayı dizisi oluşturduk, dizimin elemanları : {1/2/3/4/5/6/7/8/9/10}


·         EĞERSAY($C$2:C2;SATIR($1:$10)) : sayı dizimdeki rakamlar içerisinde c2 hücresindeki değerlerden kaç tanesi var; ilk tahmin hücremiz olduğu için daha önceden tekrarlayan bir sayı olamaz.


Bu formülü anlamak için sarı ile çizili kısmı yorumlayalım:


EĞERSAY($C$2:C5;SATIR($1:$10)) : sayı dizimde yani {1/2/3/4/5/6/7/8/9/10} içerisinde C2:C5 arasındaki { ,3,10,4 } hangi sayılar var? Formül şöyle bir sonuç döndürecek:


{0/0/1/1/0/0/0/0/0/1} DEĞİL ile formülü tersine çevirelim: {doğru/doğru/yanlış/yanlış/doğru/ doğru/ doğru/ doğru/ doğru/yanlış}


Bunu satır dizemle çarptığımda tekrarlayan değerler dizide 0 değerini alacak: yani =BÜYÜK({1/2/0/0/5/6/7/8/9/0}; RASTGELEARADA(1;11-SATIR(A4)))


Bu kısım ile benzer değer üretmesini engellemiş olduk;


·         Şimdi geldik random (rastgele) sayı üreten kısma


RASTGELEARADA(1;11-SATIR(A4)) : her bir satır aşağıya indiğimizde dizimdeki sıfır sayısı satır sayımın 1 eksiği kadar artıyor. Yani 4. Rakamı tahmin ederken dizimde önceden tahmin edilmiş 3 sayı bulunuyor ve bu üç sayı değil fonksiyonuyla sıfır halini alıyor.


Dolayısıyla biz de tahmin aralığımızı 0 sayısı kadar azaltmaz isek tahmin sonucumuz 0 ı döndürebilir.


‘Nasıl mı?

Yine 4. Sayıyı ürettiğimiz satırda olduğumuzu varsayalım:


RASTGELEARADA(1;10) olarak sayı ürettik sonuç olarak 9 verdi. Formülümüz BÜYÜK({1/2/0/0/5/6/7/8/9/0};9) halini aldı. 9. Sıradaki en büyük sayı 0 olduğu için sonuç 0 gelecektir.


Dolayısıyla sayı aralığımızın en büyük değeri (dizi sayımız- 0 sayısı) olmalı.


·         En son kısma geldik:



=BÜYÜK({1/2/0/0/5/6/7/8/9/0}; RASTGELEARADA(1;7))  sonucun 6 gelmesi için rastsal sayımız 4 olmalı (6 =dizideki 4. Büyük sayı)


==BÜYÜK({1/2/0/0/5/6/7/8/9/0}; 4) = 6 



1-49 sayısal loto



A
B
C
D
1
2
3
3
=BÜYÜK(SATIR($1:$49)*DEĞİL(EĞERSAY($C$2:C2;SATIR($1:$49)));RASTGELEARADA(1;50-SATIR(A1)))
4
49
=BÜYÜK(SATIR($1:$49)*DEĞİL(EĞERSAY($C$2:C3;SATIR($1:$49)));RASTGELEARADA(1;50-SATIR(A2)))
5
24
=BÜYÜK(SATIR($1:$49)*DEĞİL(EĞERSAY($C$2:C4;SATIR($1:$49)));RASTGELEARADA(1;50-SATIR(A3)))
6
12
=BÜYÜK(SATIR($1:$49)*DEĞİL(EĞERSAY($C$2:C5;SATIR($1:$49)));RASTGELEARADA(1;50-SATIR(A4)))
7
2
=BÜYÜK(SATIR($1:$49)*DEĞİL(EĞERSAY($C$2:C6;SATIR($1:$49)));RASTGELEARADA(1;50-SATIR(A5)))
8
40
=BÜYÜK(SATIR($1:$49)*DEĞİL(EĞERSAY($C$2:C7;SATIR($1:$49)));RASTGELEARADA(1;50-SATIR(A6)))





1-80 10 numara



A
B
C
D
1
2
3
32
=BÜYÜK(SATIR($1:$80)*DEĞİL(EĞERSAY($C$2:C2;SATIR($1:$80)));RASTGELEARADA(1;81-SATIR(A1)))
4
59
=BÜYÜK(SATIR($1:$80)*DEĞİL(EĞERSAY($C$2:C3;SATIR($1:$80)));RASTGELEARADA(1;81-SATIR(A2)))
5
27
=BÜYÜK(SATIR($1:$80)*DEĞİL(EĞERSAY($C$2:C4;SATIR($1:$80)));RASTGELEARADA(1;81-SATIR(A3)))
6
37
=BÜYÜK(SATIR($1:$80)*DEĞİL(EĞERSAY($C$2:C5;SATIR($1:$80)));RASTGELEARADA(1;81-SATIR(A4)))
7
34
=BÜYÜK(SATIR($1:$80)*DEĞİL(EĞERSAY($C$2:C6;SATIR($1:$80)));RASTGELEARADA(1;81-SATIR(A5)))
8
6
=BÜYÜK(SATIR($1:$80)*DEĞİL(EĞERSAY($C$2:C7;SATIR($1:$80)));RASTGELEARADA(1;81-SATIR(A6)))
9
47
=BÜYÜK(SATIR($1:$80)*DEĞİL(EĞERSAY($C$2:C8;SATIR($1:$80)));RASTGELEARADA(1;81-SATIR(A7)))
10
19
=BÜYÜK(SATIR($1:$80)*DEĞİL(EĞERSAY($C$2:C9;SATIR($1:$80)));RASTGELEARADA(1;81-SATIR(A8)))
11
55
=BÜYÜK(SATIR($1:$80)*DEĞİL(EĞERSAY($C$2:C10;SATIR($1:$80)));RASTGELEARADA(1;81-SATIR(A9)))
12
15
=BÜYÜK(SATIR($1:$80)*DEĞİL(EĞERSAY($C$2:C11;SATIR($1:$80)));RASTGELEARADA(1;81-SATIR(A10)))





Yeni yeni rakamlar üretmek için F9 a basalım:



Ya da vba da küçük bir calculate formülü yazalım ve bunu bir butona bağlayalım



Sub Macro1()



    Calculate



End Sub






2 yorum:

  1. Merhaba hocam,
    Elimde 90 kişilik bir liste var. Aynı mantıkla listedeki kişileri rastgele tekrarsız olarak yazdırmak istiyorum. Nasıl yapabilirim yardımcı olur musunuz?

    YanıtlaSil

Not: Yalnızca bu blogun üyesi yorum gönderebilir.