Cara Mengambil Nilai Acak pada VBA Excel

http://excellxlsx.blogspot.com/

Belajar Excel - Nilai acak sering kita gunakan sebagai simulasi atau menghasilkan data contoh. Pada VBA, fungsi untuk menghasilkan nilai acak adalah RND().

Pemanggilan fungsi RND akan menghasilkan nilai pecahan dari 0 s/d 1, misalkan nilai 0.96 atau 0.056.

Selain itu, fungsi ini dapat menerima satu parameter bertipe nilai numerik dengan syntax sebagai berikut.

RND(PARAMETER_ANGKA)

Dimana PARAMETER_ANGKA dapat memiliki nilai sebagai berikut.
  • nilai di bawah nol  ( <0 ), akan menghasilkan nilai acak pertama kali saja. Setelah itu nilainya tidak akan berubah-ubah. 
  • nilai di atas nol  ( >0 ), akan menghasilkan nilai acak berikutnya.
  • nilai nol  ( 0 ), akan menghasilkan nilai yang sama dengan nilai acak terakhir yang dihasilkan.
Semua nilai parameter di atas akan tetap menghasilkan nilai acak pecahan dari 0 s/d 1.

Jika Anda ingin mengambil rentang nilai diantara 0 s/d 100 maka dapat menggunakan kode berikut:

RND() * 100

Dan jika Anda ingin mengambil rentang nilai yang memiliki nilai negatif, misalkan diantara -50 s/d 50 maka dapat menggunakan kode berikut:

RND() * 100 - 50

Berikut adalah contoh code VBA pada satu worksheet yang memiliki 3 button dan telah diassign macro masing-masing button1_click, button2_click dan button3_click untuk mensimulasikan penggunaan berbagai variasi fungsi RND.
Sub Button1_Click()
    Sheet1.Range("A1") = "Rnd()"
    Sheet1.Range("B1") = "Rnd(0)"
    Sheet1.Range("C1") = ""
    Sheet1.Range("D1") = "Rnd(5)"
    Sheet1.Range("A2") = Rnd()
    Sheet1.Range("B2") = Rnd(0)
    Sheet1.Range("C2") = ""
    Sheet1.Range("D2") = Rnd(5)
End Sub

Sub Button2_Click()
    Sheet1.Range("A1") = "Rnd()"
    Sheet1.Range("B1") = "Rnd(0)"
    Sheet1.Range("C1") = "Rnd(-5)"
    Sheet1.Range("D1") = "Rnd(5)"
    Sheet1.Range("A2") = Rnd()
    Sheet1.Range("B2") = Rnd(0)
    Sheet1.Range("C2") = Rnd(-5)
    Sheet1.Range("D2") = Rnd(5)
End Sub

Sub Button3_Click()
    Sheet1.Range("A1") = "0.00 s/d 100.00"
    Sheet1.Range("B1") = "0 s/d 100"
    Sheet1.Range("C1") = "-50 s/d 50"
    Sheet1.Range("D1") = ""
    Sheet1.Range("A2") = Rnd() * 100
    Sheet1.Range("B2") = CInt(Rnd() * 100)
    Sheet1.Range("C2") = CInt(Rnd() * 100 - 50)
    Sheet1.Range("D2") = ""
End Sub


Leave a Reply

Powered by Blogger.