Membuat Angka Acak Menggunakan Rnd dan Randomize di VBA Excel

Pernahkah kalian membuat aplikasi yang membutuhkan nomor undian, soal latihan yang selalu berbeda, atau data simulasi untuk pengujian? Semua kebutuhan tersebut memiliki satu kesamaan, yaitu memerlukan angka yang dihasilkan secara acak.

Di VBA Excel, proses tersebut dapat dilakukan menggunakan fungsi Rnd dan pernyataan Randomize. Keduanya sering digunakan bersamaan untuk menghasilkan angka acak yang lebih bervariasi, sehingga aplikasi menjadi lebih dinamis dan tidak menghasilkan pola yang sama setiap kali dijalankan.


Apa Itu Fungsi Rnd?

Rnd adalah fungsi bawaan VBA yang menghasilkan bilangan acak bertipe desimal (Single) dengan rentang nilai mulai dari 0 (termasuk) hingga kurang dari 1.

Sintaksnya sangat sederhana.

Rnd

Contoh penggunaan:

Sub ContohRnd()

    MsgBox Rnd

End Sub

Setiap kali macro dijalankan, hasil yang ditampilkan akan berbeda, misalnya:

0.483612

atau

0.912475

Karena menghasilkan angka desimal antara 0 dan 1, fungsi Rnd biasanya dikombinasikan dengan perhitungan lain untuk memperoleh angka sesuai kebutuhan.


Mengapa Perlu Menggunakan Randomize?

Meskipun Rnd dapat langsung digunakan, praktik terbaik adalah selalu memanggil Randomize terlebih dahulu.

Randomize

Pernyataan Randomize berfungsi menginisialisasi generator angka acak menggunakan waktu sistem sebagai dasar (seed). Dengan demikian, angka yang dihasilkan tidak mengikuti pola yang sama setiap kali workbook dijalankan.

Contoh:

Sub Acak()

    Randomize

    MsgBox Rnd

End Sub

Tanpa Randomize, hasil yang diperoleh pada setiap sesi dapat cenderung berulang.


Menghasilkan Bilangan Bulat

Dalam praktiknya, Anda biasanya membutuhkan bilangan bulat, bukan angka desimal.

Untuk menghasilkan angka antara 1 sampai 10, gunakan rumus berikut.

Randomize

MsgBox Int((10 * Rnd) + 1)

Hasil yang mungkin muncul:

8

Untuk menghasilkan angka antara 1 sampai 100.

Randomize

MsgBox Int((100 * Rnd) + 1)

Dengan mengubah angka maksimum, Anda dapat menyesuaikan rentang bilangan sesuai kebutuhan aplikasi.


Membuat Angka Acak dalam Rentang Tertentu

Jika Anda ingin menghasilkan angka antara 50 hingga 75, gunakan rumus berikut.

Randomize

MsgBox Int((75 - 50 + 1) * Rnd + 50)

Rumus tersebut dapat diterapkan untuk berbagai rentang nilai hanya dengan mengganti angka minimum dan maksimum.


Studi Kasus 1: Membuat Nomor Undian

Misalkan sebuah acara memiliki 300 peserta dan setiap peserta memiliki nomor undian.

Sub NomorUndian()

    Randomize

    MsgBox "Nomor Pemenang : " & _
    Int((300 * Rnd) + 1)

End Sub

Setiap kali macro dijalankan, sistem akan memilih satu nomor secara acak.


Studi Kasus 2: Menghasilkan Nilai Simulasi

Saat mengembangkan aplikasi, sering kali Anda memerlukan data uji.

Sub NilaiAcak()

    Randomize

    Range("A2").Value = _
    Int((100 * Rnd) + 1)

End Sub

Macro tersebut akan menghasilkan nilai acak antara 1 hingga 100 setiap kali dijalankan.


Studi Kasus 3: Memilih Pemenang dari Daftar Peserta

Misalkan daftar nama peserta berada pada sel A2:A101.

Sub PilihPemenang()

    Dim Baris As Integer

    Randomize

    Baris = Int((100 * Rnd) + 2)

    MsgBox "Pemenang: " & _
    Range("A" & Baris).Value

End Sub

Dengan pendekatan ini, nama peserta dipilih secara acak tanpa harus melakukan pemilihan secara manual.


Studi Kasus 4: Simulasi Lempar Dadu

Permainan sederhana juga dapat dibuat menggunakan fungsi Rnd.

Sub LemparDadu()

    Randomize

    MsgBox Int((6 * Rnd) + 1)

End Sub

Hasil yang muncul akan selalu berada pada rentang 1 sampai 6, sama seperti dadu pada umumnya.


💡 Tips Praktis

Panggil Randomize satu kali sebelum proses pembangkitan angka dimulai. Setelah itu, Anda dapat memanggil fungsi Rnd sebanyak yang diperlukan tanpa harus mengulangi Randomize di setiap baris kode.


Kesalahan yang Sering Dilakukan

Tidak Menggunakan Randomize

Kesalahan ini membuat angka yang dihasilkan memiliki pola yang sama setiap kali aplikasi dijalankan.

MsgBox Rnd

Biasakan menambahkan:

Randomize

sebelum menggunakan fungsi Rnd.


Salah Menentukan Rentang Nilai

Banyak pengguna menulis:

Int(10 * Rnd)

Padahal hasilnya adalah 0 hingga 9.

Jika menginginkan angka 1 hingga 10, gunakan:

Int((10 * Rnd) + 1)

Menganggap Rnd Menghasilkan Bilangan Bulat

Fungsi Rnd selalu menghasilkan angka desimal.

Jika membutuhkan bilangan bulat, kombinasikan dengan fungsi Int seperti pada contoh sebelumnya.


Kapan Menggunakan Rnd dan Randomize?

Kombinasi kedua komponen ini sangat bermanfaat untuk berbagai kebutuhan, seperti:

  • membuat nomor undian,

  • memilih data secara acak,

  • menghasilkan data simulasi,

  • membuat permainan sederhana,

  • mengacak soal latihan,

  • melakukan pengujian aplikasi,

  • menjalankan simulasi statistik.

Karena fleksibilitasnya, Rnd dan Randomize termasuk fungsi yang sering digunakan dalam pengembangan aplikasi interaktif berbasis VBA Excel.


Kesimpulan

Fungsi Rnd dan pernyataan Randomize merupakan kombinasi yang penting ketika Anda ingin menghasilkan angka acak di VBA Excel. Rnd bertugas menghasilkan nilai acak, sedangkan Randomize memastikan setiap proses dimulai dengan kondisi yang berbeda sehingga hasil yang diperoleh lebih bervariasi.

Melalui artikel ini, Anda telah mempelajari cara menghasilkan angka acak, membuat bilangan bulat dalam rentang tertentu, serta menerapkannya pada berbagai studi kasus seperti sistem undian, simulasi data, pemilihan peserta, dan permainan sederhana.

Dengan memahami cara kerja kedua komponen ini, Anda dapat membangun aplikasi VBA Excel yang lebih interaktif, dinamis, dan mampu menghasilkan variasi data sesuai kebutuhan.

Hubungi Kami

Kantor Berkreasi
Alamat :
Pens Sky Venture - Sukolilo Surabaya
Karangrejo Tmur 17 Surabaya

Email : kantor.berkreasi@gmail.com
WA : wa.me/6287761589881  
(Support  Mbak Ana)

Tim Pengembang

Dr. Rojabi Azharghany, M.Si, S.Sos
Dr. H. Agus Sulthoni Imami, S.Psi. M.Pd.I.
Ali Ishaq, M.Pd.
Didik Rahwiniyanto, S.Si., M.Pd.
Mujiburrohman, M.Pd.
Mohammad Zikky, S.ST, M.T
Amien sawedi, S.Pd.
Didik P Wicaksono, M.Pd.