Formula Excel: Hasilkan rentetan teks rawak -

Formula generik

=INDEX(characters,RANDARRAY(n,1,1,count,TRUE))

Ringkasan

Untuk menghasilkan senarai rentetan teks rawak, anda boleh menggunakan formula berdasarkan INDEX, RANDARRAY, dan TEXTJOIN. Dalam contoh yang ditunjukkan, formula dalam D5 adalah:

=TEXTJOIN("",1,INDEX(chars,RANDARRAY(6,1,1,26,TRUE)))

di mana watak adalah julat bernama B5: B30 yang mengandungi huruf AZ. Semasa formula disalin ke bawah lajur, ia menghasilkan rentetan teks 6-karakter baru pada setiap baris.

Penjelasan

Rumus array dinamik baru di Excel 365 menjadikannya lebih mudah untuk menyelesaikan masalah rumit tertentu dengan formula.

Dalam contoh ini, tujuannya adalah untuk menghasilkan senarai kod 6 aksara rawak. Rawak dikendalikan oleh fungsi RANDARRAY, fungsi baru di Excel 365. RANDARRAY mengembalikan 6 nombor rawak ke INDEX, yang kemudian mengambil 6 nilai rawak dari kisaran julat yang dinamakan. Hasil dari INDEX kemudian digabungkan bersama dengan fungsi TEXTJOIN.

Dalam contoh yang ditunjukkan, formula dalam D5 adalah:

=TEXTJOIN("",1,INDEX(chars,RANDARRAY(6,1,1,26,TRUE)))

Berfungsi dari dalam ke luar, fungsi RANDARRAY digunakan untuk menghasilkan array yang mengandungi enam nombor rawak antara 1-26:

RANDARRAY(6,1,1,26,TRUE) // return array like (14;5;21;7;25;3)

Perhatikan bahawa array yang dikembalikan akan berbeza-beza pada setiap fungsi RANDARRAY. Juga, kerana RANDARRAY adalah fungsi yang tidak menentu, ia akan dikira semula dengan setiap perubahan lembaran kerja.

Susunan nombor rawak ini dikembalikan terus ke fungsi INDEX sebagai argumen baris:

INDEX(chars,(14;5;21;7;25;3))

Kerana kami meminta INDEX untuk 6 baris, kami mendapat 6 hasil dalam pelbagai seperti ini:

("N","E","U","G","Y","C")

Susunan ini dikembalikan ke fungsi TEXTJOIN sebagai argumen text1:

=TEXTJOIN("",1,("N","E","U","G","Y","C")) // returns "NEUGYC"

TEXTJOIN diatur untuk menggunakan rentetan kosong sebagai pembatas dan mengabaikan nilai kosong. Dengan konfigurasi ini, TEXJOIN hanya menggabungkan semua nilai bersama-sama dan mengembalikan rentetan teks 6-karakter seperti "NEUGYC".

Hitung carta secara teratur

Daripada mengekodkan ukuran huruf langsung ke fungsi RANDARRAY, anda boleh menggunakan fungsi COUNTA untuk mengira unsur-unsur dalam array dan mengembalikannya ke RANDARRAY:

RANDARRAY(6,1,1,COUNTA(chars),TRUE)

Ini menganggap chars tidak mengandungi sel kosong.

Hasilkan watak secara teratur

Oleh kerana huruf AZ memiliki nilai kod numerik yang mendasari, adalah mungkin untuk menghasilkan susunan aksara yang digunakan untuk menyusun rentetan teks secara terprogram, bukannya menggunakan rentang. Ini dapat dilakukan dengan fungsi CHAR dan fungsi SEQUENCE.

Untuk menghasilkan array dengan semua huruf besar AZ, yang memetakan 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",… )

Kod ini boleh dimasukkan ke dalam formula asal untuk menggantikan "chars" seperti ini:

=TEXTJOIN("",1,INDEX(CHAR(SEQUENCE(26,1,65,1)),RANDARRAY(6,1,1,26,TRUE)))

Watak lain

Watak-watak dalam watak julukan boleh menjadi apa sahaja yang anda suka. Sekiranya anda menambah lebih daripada 26 aksara (atau kurang) sesuaikan angka 26 sesuai, 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 angka menjadi huruf. Seperti di atas, semua hasil digabungkan bersama dalam satu rentetan teks.

Artikel menarik...