
Formula umum
=INDEX(characters,RANDARRAY(n,1,1,count,TRUE))
Ringkasan
Untuk membuat daftar string teks acak, Anda dapat menggunakan rumus berdasarkan INDEX, RANDARRAY, dan TEXTJOIN. Dalam contoh yang ditampilkan, rumus di D5 adalah:
=TEXTJOIN("",1,INDEX(chars,RANDARRAY(6,1,1,26,TRUE)))
di mana karakter adalah rentang bernama B5: B30 yang berisi huruf AZ. Saat rumus disalin ke bawah kolom, itu menghasilkan string teks 6 karakter baru di setiap baris.
Penjelasan
Rumus array dinamis baru di Excel 365 membuatnya lebih mudah untuk memecahkan masalah rumit tertentu dengan rumus.
Dalam contoh ini, tujuannya adalah untuk menghasilkan daftar kode 6 karakter acak. Keacakan ditangani oleh fungsi RANDARRAY, fungsi baru di Excel 365. RANDARRAY mengembalikan 6 nomor acak ke INDEX, yang kemudian mengambil 6 nilai acak dari karakter rentang bernama. Hasil dari INDEX kemudian digabungkan dengan fungsi TEXTJOIN.
Dalam contoh yang ditampilkan, rumus di D5 adalah:
=TEXTJOIN("",1,INDEX(chars,RANDARRAY(6,1,1,26,TRUE)))
Bekerja dari dalam ke luar, fungsi RANDARRAY digunakan untuk menghasilkan larik yang berisi enam angka acak antara 1-26:
RANDARRAY(6,1,1,26,TRUE) // return array like (14;5;21;7;25;3)
Perhatikan bahwa array yang dikembalikan akan bervariasi dengan setiap instance dari fungsi RANDARRAY. Juga, karena RANDARRAY adalah fungsi yang mudah menguap, itu akan dihitung ulang dengan setiap perubahan lembar kerja.
Larik angka acak ini dikembalikan langsung ke fungsi INDEX sebagai argumen baris:
INDEX(chars,(14;5;21;7;25;3))
Karena kami meminta INDEX untuk 6 baris, kami mendapatkan kembali 6 hasil dalam array seperti ini:
("N","E","U","G","Y","C")
Array ini dikembalikan ke fungsi TEXTJOIN sebagai argumen text1:
=TEXTJOIN("",1,("N","E","U","G","Y","C")) // returns "NEUGYC"
TEXTJOIN diatur untuk menggunakan string kosong sebagai pembatas dan untuk mengabaikan nilai kosong. Dengan konfigurasi ini, TEXJOIN cukup menggabungkan semua nilai dan mengembalikan string teks 6 karakter seperti "NEUGYC".
Hitung karakter secara terprogram
Daripada melakukan hardcode ukuran karakter secara langsung ke dalam fungsi RANDARRAY, Anda dapat menggunakan fungsi COUNTA untuk menghitung elemen dalam larik dan mengembalikan hitungan itu ke RANDARRAY:
RANDARRAY(6,1,1,COUNTA(chars),TRUE)
Ini mengasumsikan karakter tidak mengandung sel kosong.
Hasilkan karakter secara terprogram
Karena huruf AZ memiliki nilai kode numerik yang mendasari, dimungkinkan untuk menghasilkan larik karakter yang digunakan untuk merangkai string teks secara terprogram, daripada menggunakan rentang. Ini bisa dilakukan dengan fungsi CHAR dan fungsi SEQUENCE.
Untuk membuat larik dengan semua huruf besar AZ, yang dipetakan ke ASCII 65-90:
=CHAR(SEQUENCE(26,1,65,1)) // returns ("A","B","C",… )
Untuk menghasilkan huruf kecil az, yang sesuai dengan ASCII 97-122:
=CHAR(SEQUENCE(26,1,97,1)) // returns ("a","b","c",… )
Kode ini dapat dimasukkan ke dalam rumus asli untuk menggantikan "karakter" seperti ini:
=TEXTJOIN("",1,INDEX(CHAR(SEQUENCE(26,1,65,1)),RANDARRAY(6,1,1,26,TRUE)))
Karakter lain
Karakter dalam kisaran bernama karakter bisa apa saja yang Anda suka. Jika Anda menambahkan lebih dari 26 karakter (atau kurang) sesuaikan angka 26 sesuai kebutuhan, atau gunakan COUNTA seperti yang dijelaskan di atas.
Tanpa Excel 365
It is possible to generate random text strings without Excel 365, but the formula is more tedious and redundant. Since we don't have a good way to get 6 random numbers all at once, we use the RANDBETWEEN function to get one random value at a time:
=INDEX(chars,RANDBETWEEN(1,26))& INDEX(chars,RANDBETWEEN(1,26))& INDEX(chars,RANDBETWEEN(1,26))& INDEX(chars,RANDBETWEEN(1,26))& INDEX(chars,RANDBETWEEN(1,26))& INDEX(chars,RANDBETWEEN(1,26))
This formula uses the INDEX function to retrieve one random value at a time from the named range chars, and the 6 results are concatenated together into a single text string. Line breaks added for readability.
It is also possible to generate values A-Z directly with CHAR and RANDBETWEEN like this:
=CHAR(RANDBETWEEN(65,90))& CHAR(RANDBETWEEN(65,90))& CHAR(RANDBETWEEN(65,90))& CHAR(RANDBETWEEN(65,90))& CHAR(RANDBETWEEN(65,90))& CHAR(RANDBETWEEN(65,90))
Dalam versi ini, RANDBETWEEN mengembalikan nilai antara 65 dan 90 (inklusif) yang sesuai dengan nilai ASCII untuk huruf AZ (huruf besar). Fungsi CHAR menerjemahkan nilai numerik menjadi sebuah huruf. Seperti di atas, semua hasil digabungkan menjadi satu string teks.