Rumus Excel: Daftar nama acak -

Formula umum

=INDEX(names,RANDARRAY(n,1,1,COUNTA(names),TRUE))

Ringkasan

Untuk membuat daftar nama acak, Anda dapat menggunakan fungsi INDEX dan fungsi RANDARRAY untuk memilih nama acak dari daftar yang ada. Dalam contoh yang ditampilkan, rumus di D5 adalah:

=INDEX(names,RANDARRAY(10,1,1,COUNTA(names),TRUE))

yang mengembalikan 10 nilai acak dari rentang bernama "nama" (B5: B104).

Penjelasan

Pada intinya, rumus ini menggunakan fungsi INDEX untuk mengambil 10 nama acak dari rentang bernama "nama" yang berisi 100 nama. Misalnya, untuk mengambil nama kelima dari daftar, kami menggunakan INDEX seperti ini:

=INDEX(names,5)

Namun, trik dalam kasus ini adalah kita tidak menginginkan satu nama pun di lokasi yang diketahui, kita ingin 10 nama acak di lokasi yang tidak diketahui antara 1 dan 100. Ini adalah kasus penggunaan yang sangat baik untuk fungsi RANDARRAY, yang dapat membuat kumpulan bilangan bulat acak dalam rentang tertentu. Bekerja dari dalam ke luar, kami menggunakan RANDARRAY untuk mendapatkan 10 angka acak antara 1 dan 100 seperti ini:

RANDARRAY(10,1,1,COUNTA(names)

Fungsi COUNTA digunakan untuk mendapatkan jumlah dinamis nama dalam daftar, tetapi kita dapat mengganti COUNTA dengan 100 hardcode dalam kasus ini dengan hasil yang sama:

=INDEX(names,RANDARRAY(10,1,1,100,TRUE))

Dalam kedua kasus tersebut, RANDARRAY akan mengembalikan 10 angka dalam larik yang terlihat seperti ini:

(64;74;13;74;96;65;5;73;84;85)

Catatan: nomor ini hanya acak dan tidak langsung dipetakan ke contoh yang ditunjukkan.

Array ini dikembalikan langsung ke fungsi INDEX sebagai argumen baris:

=INDEX(names, (64;74;13;74;96;65;5;73;84;85)

Karena kami memberikan INDEX 10 nomor baris, itu akan menjadi 10 hasil, masing-masing sesuai dengan nama pada posisi yang diberikan. 10 nama acak dikembalikan dalam rentang tumpahan yang dimulai dari sel D5.

Catatan: RANDARRAY adalah fungsi yang mudah menguap dan akan menghitung ulang setiap kali lembar kerja diubah, menyebabkan nilai-nilai harus digunakan. Untuk menghentikan pengurutan nilai secara otomatis, Anda dapat menyalin rumus, lalu gunakan Tempel Spesial> Nilai untuk mengonversi rumus menjadi nilai statis.

Cegah duplikat

Satu masalah dengan rumus di atas (tergantung pada kebutuhan Anda) adalah bahwa RANDARRAY terkadang akan menghasilkan angka duplikat. Dengan kata lain, tidak ada jaminan bahwa RANDARRAY akan mengembalikan 10 nomor unik.

Untuk memastikan 10 nama berbeda dari daftar, Anda bisa mengadaptasi rumus untuk mengurutkan daftar lengkap nama secara acak, lalu mengambil 10 nama pertama dari daftar. Rumus di F5 menggunakan pendekatan ini:

=INDEX(SORTBY(names,RANDARRAY(COUNTA(names))),SEQUENCE(10))

Pendekatannya di sini sama seperti di atas - kami menggunakan INDEX untuk mengambil 10 nilai dari daftar nama. Namun, dalam versi rumus ini, kami mengurutkan daftar nama secara acak sebelum menyerahkan daftar tersebut ke INDEX seperti ini:

SORTBY(names,RANDARRAY(COUNTA(names)))

Di sini, fungsi SORTBY digunakan untuk mengurutkan daftar nama secara acak dengan nilai array yang dibuat oleh fungsi RANDARRAY, seperti yang dijelaskan lebih detail di sini.

Akhirnya, kita perlu mengambil 10 nilai. Karena kita sudah memiliki nama dalam urutan acak, kita cukup meminta 10 nama pertama dengan larik yang dibuat oleh fungsi SEQUENCE seperti ini:

SEQUENCE(10)

SEQUENCE membangun larik angka berurutan:

(1;2;3;4;5;6;7;8;9;10)

yang dikembalikan ke fungsi INDEX sebagai argumen baris. INDEX lalu mengembalikan 10 nama pertama dalam rentang tumpahan seperti rumus aslinya.

Artikel yang menarik...