- RANDBETWEEN関数とBASE関数の組み合わせで、英数字の混じったランダムな文字列を生成することができます。
- 長い文字列を作る場合や英字のみにする場合にはRANDARRAY関数とBASE関数の組み合わせを使います。
手順
数文字程度の英数字を作る場合
ここでは8文字の英数字を生成するものとします。
適当なセルに次のように入力します。
=BASE(RANDBETWEEN(0,36^8-1),36,8)
RANDBETWEEN関数で0から36^8-1のランダムな整数を生成し、それをBASE関数により36進数の8桁の文字列に変換します(桁数はこのように指数部分とBASE関数の第3引数の2か所で指定します)。
つまり00000000からZZZZZZZZまでのランダムな文字列が取得できるというわけです。
実行結果はこうなります。
さらに下方にドラッグした結果です。
ただし長い文字列を生成しようとするとRANDBETWEENの引数が大きすぎてエラーになりますので次の例によることとなります。
長い英数字列を作る場合
比較的長い文字列を生成する場合はRANDARRAY関数とBASE関数で1文字ずつ生成して結合するという方法をとります。
画像は結果で、B2セル以降のセルに次の式を入力しています。
=CONCAT(BASE(RANDARRAY(30,1,0,35,TRUE),36))
RANDARRAY関数の第1引数(30)により、生成するランダムな整数の個数(結果的に文字列の長さ)を指定しています。
BASE関数との組み合わせにより0~Zの英数字を1文字ずつ生成してCONCAT関数で結合しています。
英字のみの列を作る場合
英字だけの文字列を生成する場合もRANDARRAY関数とBASE関数で1文字ずつ生成して結合します。
画像は結果で、B2セル以降のセルに次の式を入力しています。
=CONCAT(BASE(RANDARRAY(8,1,10,35,TRUE),36))
RANDARRAY関数により生成される最小の数値を10としているため0~9の数字(文字)が生成されません。
一般的なパスワードの生成(使用できる文字の指定)
一般的なパスワードを生成する場合は、大文字と小文字を併用したり紛らわしい文字(1とI、0とOなど)の使用を制限するなどの条件が求められます。これについては次の記事で紹介しています。