Bagaimana cara menghasilkan angka acak di vba?
Di VBA, Anda dapat menggunakan berbagai cara untuk menghasilkan angka acak di Excel, dan dalam artikel ini, kita akan melihat semuanya satu per satu.
fungsi RND
Untuk menghasilkan angka acak, di VBA ada fungsi yang disebut RND . Fungsi ini berarti acak dan ketika Anda menggunakan fungsi ini dalam kode, ia mengembalikan angka acak antara 0 dan 1. Di RND Anda tidak perlu menentukan argumen apa pun.
Range("A1") = Rnd()
Kode di atas menggunakannya untuk mendapatkan nomor acak di A1 dan mengembalikan 0,705547521.
Namun saat Anda menggunakannya untuk seluruh rentang, ia mengembalikan angka acak yang sama di seluruh rentang dan menjadikannya nol untuk digunakan menghasilkan angka acak lebih dari sekali.
Nah, di sini tidak masuk akal untuk menggunakannya, bukan? Namun ada solusi yang bisa Anda gunakan, FOR NEXT LOOP .
Pada kode di atas Anda memiliki perulangan yang melewati 10 sel (satu per satu) mulai dari sel yang dipilih dan menambahkan nomor acak.
Berikut kode lengkapnya:
Sub vba_random_number() Dim i As Long i = 10 For i = 1 To i ActiveCell.Value = Rnd() ActiveCell.Offset(1, 0).Select Next i End Sub
Angka acak di antara dua angka
Jika Anda ingin menghasilkan angka acak antara dua angka yang ditentukan, dalam hal ini Anda perlu menulis kode menggunakan dua fungsi VBA ( RND + INT ). Kode rumusnya akan seperti di bawah ini.
Sub vba_random_number() Dim myRnd As Integer myRnd = Int(2 + Rnd * (45 - 10 + 1)) Range("A1") = myRnd End Sub
Saat Anda menjalankan makro ini , RND menggunakan angka maksimum dan angka minimum yang Anda tetapkan untuk menghasilkan angka acak, dan INT menghilangkan tempat desimal.
Menggunakan Fungsi Lembar Kerja dalam Kode VBA untuk Menghasilkan Angka Acak
Di VBA, Anda bisa mengakses fungsi lembar kerja dan menggunakannya untuk mendapatkan hasil dengan menentukan argumen. Dua fungsi spreadsheet dapat membantu Anda mendapatkan angka acak pada hasilnya.
- RandAntara
- RandTableau
Sebelum menggunakan fungsi ini, pastikan Anda memahami argumen yang perlu Anda tetapkan. Sekarang pada kode di bawah ini Anda memiliki RANDBETWEEN yang menghasilkan angka acak antara dua angka.
Range("A1") = WorksheetFunction.RandBetween(1000, 2000)
Di sini angka maksimumnya adalah 2000 dan angka minimumnya adalah 1000. Demikian pula, Anda dapat menggunakan RANDARRAY yang merupakan fungsi array dinamis.
Ini kodenya.
Range("A1:B10") = WorksheetFunction.RandArray(10, 2, 1000, 2000, True)
Jika Anda melihat sintaks RANDARRAY, Anda akan menemukan bahwa Anda dapat memasukkan angka acak dalam rentang bilangan bulat, yang tidak mungkin dilakukan dengan semua metode yang kita bahas di atas.