Benzersiz rasgele sayıların bir listesini oluşturmak istiyorsanız, RANDBETWEEN işlevlerini ve VBA RND'yi kullanabilirsiniz. Bu yazıda, sağlanan listeden 3 benzersiz sayı üreteceğiz.
Orijinal soruyu burada bulabilirsiniz
Soru: A sütununa kaydedilen sayılar listesinden 3 rastgele sayı listesi oluşturacak bir makro istiyorum. VBA kodunun halledilmesi gereken bir durum var. Koşul, B sütununda bulunan 3 sayının olmasıdır, bu nedenle makronun B sütununda bir kez geçmeyen sayıların bir listesini oluşturması gerekir. Bu şekilde, B ve C sütununda benzersiz sayıların bir listesini alabiliriz.
Sahip olduğumuz örneğin anlık görüntüsü aşağıdadır:
Benzersiz rastgele sayıların listesini almak için; VB editörünü başlatmak için aşağıdaki adımları izlememiz gerekiyor
- Geliştirici sekmesine tıklayın
- Kod grubundan Visual Basic'i seçin
- Aşağıdaki kodu standart modüle kopyalayın
Sub RandomNumbers() Dim ws Çalışma Sayfası Olarak Dim ar Varyant Olarak Dim Dim RandomNum As Long Dim i As Integer Dim myVal As Long Randomize Set ws = ThisWorkbook.Sheets("Numbers") ws ar = .Range("A" & Rows.Count ile) .End(xlUp).Row .Range("C1:C3").ClearContents For i = 1 ila 3 Do RandomNum = Int((1 - ar + 1) * Rnd + ar) myVal = .Range("A" & RandomNum).Value Loop Before Range("B1:C24").Find(what:=myVal, lookat:=xlWhole) Is Nothing .Range("C" & i).Value = myVal Next i End with End Sub
- Makroyu çalıştırmak için Visual Basic Editor ekranında aktif iseniz klavyeden F5 tuşuna basabiliriz.
- Makroyu çalıştırmanın başka bir yolu da “ALT + F8” tuşunu kullanmaktır; makroyu seçin ve Çalıştır düğmesine tıklayın
- VBA kodunu çalıştırdığımızda, benzersiz numara listesi otomatik olarak oluşturulacaktır.
Kod Açıklaması:
Yukarıdaki kodda, sonucu almak için For loop & Do döngüsü ile birlikte RND & INT işlevini kullanacağız.
- Dim ws'yi Çalışma Sayfası olarak ilan ediyoruz; ws'yi Çalışma Sayfası olarak bildirmenin amacı, kodun yalnızca belirli bir çalışma sayfasında, yani örneğimizde Sayılar üzerinde çalışmasını istiyoruz.
- Dim RandomNum As Long: bu benzersiz sayıları kaydeder
- Set ws = ThisWorkbook.Sheets("Numbers"): bu satır, kodun yalnızca Numbers sayfasında çalışmasını sağlar
- Sonraki kod satırı With ifadesini kullanacak
- ar = .Range("A" & Rows.Count).End(xlUp).Row: bu satır A sütunundaki son hücreyi kaydeder (bizim örneğimizde 24)
- .Range("C1:C3").ClearContents: bu satır, C1:C3 aralığındaki tüm mevcut içeriği siler
- Ardından, rasgele sayıların bir listesini oluşturmak ve mevcut aralıkta, yani B sütununda yinelenenlerin olmadığını kontrol etmek için Do Loop ile 1 ila 3 kez başlayarak For döngüsünü çalıştıracağız.
Çözüm: Yukarıdaki VBA kodunda küçük ince ayar yaparak Microsoft Excel'deki bir listeden farklı rasgele sayıların listesini oluşturabiliriz.
Bloglarımızı beğendiyseniz, Facebook'ta arkadaşlarınızla paylaşın. Ayrıca bizi Twitter ve Facebook'ta da takip edebilirsiniz.
Sizden haber almayı çok isteriz, işimizi nasıl iyileştirebileceğimizi, tamamlayabileceğimizi veya yenileyebileceğimizi ve sizin için daha iyi hale getirebileceğimizi bize bildirin. Bize e-posta sitesinde yazın