Rumus Excel: Senarai nama secara rawak -

Formula generik

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

Ringkasan

Untuk membuat senarai nama secara rawak, anda boleh menggunakan fungsi INDEX dan fungsi RANDARRAY untuk memilih nama rawak dari senarai yang ada. Dalam contoh yang ditunjukkan, formula dalam D5 adalah:

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

yang mengembalikan 10 nilai rawak dari julat "nama" yang dinamakan (B5: B104).

Penjelasan

Pada intinya, formula ini menggunakan fungsi INDEX untuk mengambil 10 nama rawak dari julat bernama yang disebut "nama" yang mengandungi 100 nama. Sebagai contoh, untuk mendapatkan nama kelima dari senarai, kami menggunakan INDEX seperti ini:

=INDEX(names,5)

Walau bagaimanapun, silap mata dalam kes ini adalah bahawa kita tidak mahu satu nama di lokasi yang diketahui, kita mahu 10 nama rawak di lokasi yang tidak diketahui antara 1 dan 100. Ini adalah kes penggunaan yang sangat baik untuk fungsi RANDARRAY, yang dapat membuat bilangan bulat rawak dalam julat tertentu. Bekerja dari dalam ke luar, kami menggunakan RANDARRAY untuk mendapatkan 10 nombor rawak antara 1 dan 100 seperti ini:

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

Fungsi COUNTA digunakan untuk mendapatkan jumlah nama yang dinamis dalam senarai, tetapi kita dapat mengganti COUNTA dengan 100 kod keras dalam kes ini dengan hasil yang sama:

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

Dalam kedua-dua kes, RANDARRAY akan mengembalikan 10 nombor dalam tatasusunan yang kelihatan seperti ini:

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

Nota: nombor ini hanya secara rawak dan tidak memetakan langsung ke contoh yang ditunjukkan.

Susunan ini dikembalikan terus ke fungsi INDEX sebagai argumen baris:

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

Kerana kita memberikan nombor baris INDEX 10, ia akan menghasilkan 10 hasil, masing-masing sesuai dengan nama pada kedudukan yang diberikan. 10 nama rawak dikembalikan dalam julat tumpahan bermula di sel D5.

Catatan: RANDARRAY adalah fungsi yang tidak menentu dan akan dikira semula setiap kali lembaran kerja diubah, menyebabkan nilai digunakan. Untuk menghentikan nilai daripada menyusun secara automatik, anda boleh menyalin formula, kemudian gunakan Tampal Khas> Nilai untuk menukar formula menjadi nilai statik.

Cegah pendua

Satu masalah dengan formula di atas (bergantung kepada keperluan anda) ialah RANDARRAY kadangkala menghasilkan nombor pendua. Dengan kata lain, tidak ada jaminan bahawa RANDARRAY akan mengembalikan 10 nombor unik.

Untuk memastikan 10 nama berbeza dari senarai, anda boleh menyesuaikan formula untuk menyusun senarai nama secara rawak, kemudian mengambil 10 nama pertama dari senarai. Rumus dalam F5 menggunakan pendekatan ini:

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

Pendekatan di sini adalah sama seperti di atas - kami menggunakan INDEX untuk mendapatkan 10 nilai dari senarai nama. Walau bagaimanapun, dalam versi formula ini, kami menyusun senarai nama secara rawak sebelum menyerahkan senarai tersebut kepada INDEX seperti ini:

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

Di sini, fungsi SORTBY digunakan untuk menyusun senarai nama secara rawak dengan nilai array yang dibuat oleh fungsi RANDARRAY, seperti yang dijelaskan dengan lebih terperinci di sini.

Akhirnya, kita perlu mendapatkan 10 nilai. Kerana kita sudah mempunyai nama dalam urutan rawak, kita hanya dapat meminta 10 yang pertama dengan array yang dibuat oleh fungsi SEQUENCE seperti ini:

SEQUENCE(10)

SEQUENCE membina pelbagai nombor berurutan:

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

yang dikembalikan ke fungsi INDEX sebagai argumen baris. INDEX kemudian mengembalikan 10 nama pertama dalam julat tumpahan seperti formula asal.

Artikel menarik...