Daftar Isi
Artikel ini mengilustrasikan 4 contoh generator angka acak Tanpa duplikat menggunakan VBA di Excel. Di sini kita akan menggunakan fungsi Rnd bawaan Excel untuk mengkonfigurasi kode kita. Mari selami contoh untuk mempelajari teknik menghasilkan angka acak yang unik.
Unduh Buku Kerja Praktik
Unduh buku kerja latihan ini untuk latihan saat Anda membaca artikel ini.
Pembangkit Angka Acak tanpa Duplikat.xlsm4 Contoh Pembangkit Angka Acak tanpa Duplikat di Excel VBA
Menulis Kode di Editor Visual Basic
Untuk menghasilkan angka acak tanpa duplikat , kita perlu terbuka dan menulis kode VBA di editor visual basic. Ikuti langkah-langkah untuk terbuka yang editor visual basic dan menulis beberapa kode di sana.
- Pergi ke Pengembang tab dari tab Pita Excel .
- Klik yang Opsi Visual Basic.
- Dalam Visual Basic Untuk Aplikasi jendela, klik tombol Sisipkan dropdown untuk pilih yang Modul Baru pilihan.
Sekarang letakkan kode di dalam editor kode visual dan tekan F5 untuk lari itu.
1. Penggunaan Fungsi VBA Rnd untuk Menghasilkan Angka Acak Tanpa Duplikat
The Fungsi Rnd digunakan dalam Excel VBA untuk menghasilkan angka acak yang antara 0 dan 1 eksklusif.
Tugas : Hasilkan 10 angka acak antara 0 dan 1 di sel A1:A10.
Kode : Sisipkan berikut ini kode di editor visual basic dan tekan F5 untuk lari itu.
Public Sub GenerateRandomNumNoDuplicates() Set cellRange = Range("A1:A10") cellRange.Clear For Each Rng In cellRange randomNumber = Rnd Do While Application.WorksheetFunction.CountIf(cellRange, randomNumber)>= 1 randomNumber = Rnd Loop Rng.Value = randomNumber Next End Sub
Keluaran Tangkapan layar di atas menunjukkan 10 nomor acak yang unik di kisaran 0 dan 1.
Penjelasan Kode:
Dalam kode ini, kami menggunakan Fungsi Rnd untuk masukkan angka acak di rentang sel A1: A10 . sebelum menyisipkan a nomor baru kami menggunakan Lakukan pengulangan sementara untuk Lihat untuk nomor di rentang sel yang telah ditentukan sebelumnya (A1: A10) apakah itu sudah ada atau tidak Untuk memeriksa Keberadaan dari nomor di rentang sel setiap kali, kami mengkonfigurasi kode dengan Fungsi COUNTIF Fungsi ini pemeriksaan a nomor acak baru di daftar dari angka yang sudah ada sebelum memasukkannya.
Baca selengkapnya: Rumus Excel untuk Menghasilkan Angka Acak (5 contoh)
2. Generator Angka Acak untuk Batas Bawah dan Batas Atas yang Ditentukan Tanpa Duplikat
Untuk menghasilkan angka acak di dalam rentang yang ditentukan , kita perlu menetapkan lowerbound dan batas atas dalam kode VBA kita. Sebagai informasi, kode lowerbound adalah angka terendah dan batas atas adalah angka tertinggi di rentang untuk generator angka acak. Kita dapat menggunakan yang berikut ini formula dalam kode kita.
(batas atas - batas bawah + 1) * Rnd + batas bawah
2.1 Pembangkit Angka Acak - Desimal
Tugas : Hasilkan 10 angka acak antara 10 dan 20 di sel A1:A10.
Kode : Sisipkan berikut ini kode di editor visual basic dan tekan F5 untuk lari itu.
Public Sub GenerateRandomNumNoDuplicates() lowerbound = 1 upperbound = 10 Set cellRange = Range("A1:A10") cellRange.Clear For Each Rng In cellRange randomNumber = (upperbound - lowerbound + 1) * Rnd + lowerbound Do While Application.WorksheetFunction.CountIf(cellRange, randomNumber)>= 1 randomNumber = (upperbound - lowerbound + 1) * Rnd + lowerbound Loop Rng.Value =randomNumber Berikutnya End Sub
Keluaran Tangkapan layar di atas menunjukkan 10 nomor acak yang unik di kisaran 1 dan 10.
2.2 Pembangkit Angka Acak - Bilangan Bulat
Dalam ilustrasi ini, kita akan menggunakan Fungsi VBA Int untuk hapus yang bagian pecahan dari angka acak .
Tugas : Hasilkan 20 bilangan bulat acak antara 1 dan 20 di sel A1: B10.
Kode : Sisipkan berikut ini kode di editor visual basic dan tekan F5 untuk lari itu.
Public Sub GenerateRandomNumNoDuplicates() lowerbound = 1 upperbound = 20 Set cellRange = Range("A1:B10") cellRange.Clear For Each Rng In cellRange randomNumber = Int((upperbound - lowerbound + 1) * Rnd + lowerbound) Do While Application.WorksheetFunction.CountIf(cellRange, randomNumber)>= 1 randomNumber = Int((upperbound - lowerbound + 1) * Rnd + lowerbound) LoopRng.Value = randomNumber Next End Sub
Keluaran Tangkapan layar di atas menunjukkan 20 bilangan bulat acak yang unik di kisaran 1 dan 20.
Baca selengkapnya: Pembangkit Angka Acak di Excel tanpa Pengulangan (9 Metode)
Bacaan Serupa
- Generator Angka Acak dengan Alat Analisis Data dan Fungsi di Excel
- Cara Menghasilkan Data Acak di Excel (9 Metode Mudah)
- Generator Nomor 5 Digit Acak di Excel (7 Contoh)
- Pembangkit Nomor 4 Digit Acak di Excel (8 Contoh)
- Hasilkan Nomor Acak dari Daftar di Excel (4 Cara)
3. Tentukan Tempat Desimal untuk Pembuat Angka Acak Unik di Excel VBA
Kita bisa menggunakan Fungsi bulat dalam kode kami untuk tentukan yang nomor dari tempat desimal di nomor unik yang dihasilkan secara acak . sintaksis dari fungsi tersebut adalah-
Round(ekspresi, [numdecimalplaces])
Kita perlu tentukan yang Argumen ke-2 sesuai dengan persyaratan .
Tugas : Menghasilkan 20 angka acak dengan 2 tempat desimal antara 1 dan 20 di sel A1: B10.
Kode : Sisipkan berikut ini kode di editor visual basic dan tekan F5 untuk lari itu.
Public Sub GenerateRandomNumNoDuplicates() lowerbound = 1 upperbound = 20 Set cellRange = Range("A1:B10") cellRange.Clear For Each Rng In cellRange randomNumber = Round((upperbound - lowerbound + 1) * Rnd + lowerbound, 2) Do While Application.WorksheetFunction.CountIf(cellRange, randomNumber)>= 1 randomNumber = Round((upperbound - lowerbound + 1) * Rnd + lowerbound, 2)Loop Rng.Value = randomNumber Next End Sub
Keluaran Tangkapan layar di atas menunjukkan 20 bilangan bulat acak unik dengan 2 tempat desimal di kisaran 1 dan 20.
Baca selengkapnya: Hasilkan Nomor Acak di Excel dengan Desimal (3 Metode)
4. Kembangkan Userform untuk Pembangkit Angka Acak tanpa Duplikat di Excel VBA
Dalam ilustrasi ini, kita akan menunjukkan cara menggunakan UserForm di Excel VBA untuk menghasilkan angka acak dengan tidak ada duplikat .
Tugas: Hasilkan 20 angka acak dalam rentang sel A1:B10 menggunakan UserForm dengan nilai masukan (i) lowerbound (ii) batas atas (iii) jumlah tempat desimal.
Buat UserForm:
Ikuti langkah-langkah di bawah ini untuk membuat UserForm dengan kami bidang masukan yang diinginkan .
- Pergi ke Pengembang tab dari tab Pita Excel .
- Klik yang Opsi Visual Basic.
- Dalam Visual Basic Untuk Aplikasi jendela, klik tombol Sisipkan dropdown untuk pilih yang UserForm pilihan.
- Dalam Penambahan UserForm a label .
- Keterangan label sebagai LowerBound di properti.
- Tambahkan dua lebih banyak label bernama Upperbund dan DesimalTempat .
- Sekarang tambahkan tiga Kotak Teks di UserForm .
- Pada tahap ini, tambahkan a CommandButton dan menamainya Hasilkan .
- Sekarang, klik dua kali yang CommandButton dan letakkan yang berikut ini kode di editor kode .
Private Sub CommandButton1_Click() Dim lowerbound As Integer Dim upperbound As Integer Dim decimalPlaces As Integer lowerbound = Val(TextBox1.Text) upperbound = Val(TextBox2.Text) decimalPlaces = Val(TextBox3.Text) Set cellRange = Range("A1:B10") cellRange.Clear For Each Rng In cellRange randomNumber = Round((upperbound - lowerbound + 1) * Rnd + lowerbound, decimalPlaces) Do WhileApplication.WorksheetFunction.CountIf(cellRange, randomNumber)>= 1 randomNumber = Round((upperbound - lowerbound + 1) * Rnd + lowerbound, decimalPlaces) Loop Rng.Value = randomNumber Next End Sub
- Tekan F5 untuk lari yang kode dan UserForm memiliki muncul .
- Letakkan lowerbound , batas atas, dan nomor dari tempat desimal di UserForm dan tekan tombol Hasilkan Tombol .
Keluaran Dalam sel A1: B10 ada 20 angka acak dengan 2 tempat desimal di kisaran 1 hingga 30.
Baca selengkapnya: Cara Menghasilkan Angka Acak Tanpa Duplikat di Excel (7 Cara)
Hal-hal yang Perlu Diingat
- Kita juga bisa menggunakan Memperbaiki fungsi bukannya Fungsi Int untuk menghasilkan bilangan bulat yang unik Fungsi menghapus yang bagian pecahan dari nomor seperti Fungsi Int .
Kesimpulan
Sekarang, kita tahu cara menghasilkan angka acak unik menggunakan VBA di Excel dengan bantuan contoh yang sesuai. Semoga ini akan membantu Anda menggunakan fungsionalitas dengan lebih percaya diri. Ada pertanyaan atau saran jangan lupa untuk memasukkannya ke dalam kotak komentar di bawah ini.