基本的な考え方
ランダムなパスワードを作ると言っても、最近はそういったことができるソフトウェアが出回っているので、Excelでわざわざ作らないといけないケースはあまり多くないかもしれません。
ただ、Excelの頭の体操的な発想で、少し考えてみると、意外と面白いので、是非考えてみてください。
基本的な考え方は次の通りです。
- 利用できる文字列一覧の中から、ランダムに文字を選び出す
- 1.を指定された文字数繰り返す
- 繰り返して得られた文字をすべてつなげる
いわれれば当たり前ですが、実装する内容を整理すると上記の通りになります。
実装してみる
ランダムに文字を取り出す
早速実装してみます。まずは1.の手順を実装します。
A1に使用できる文字列の一覧を記入し、「=MID(A1, LEN(A1)*RAND()+1, 1)」といれると、A1の中からランダムに文字列を抽出できます。
画像の例は、0~9迄の10文字が入っており、そこから任意に取り出していますが、ポイントは、第二引数を+1しているところです。
RAND()は、0以上1未満の任意の数が取り出される関数ですが、1になることはありません。LEN(A1)はA1の文字数を示すので、その返却値は、0以上10未満となりますただ、10が選ばれないと、「9」が返却されることはありません。
従って、+1する必要があります。
指定した個数に増やす
次にこれを指定した個数に増やします。
そのために、MAKEARRAY関数を用います。この関数により、指定した行数✕列数分、指定した関数の結果を増幅させることができます。
もちろん、毎回RAND()関数が実施されるので、指定した回数任意抽出が行われることになります。
少々長いですが、次のように記載します。
「=MAKEARRAY(3,1,LAMBDA(r,c,MID(A1, LEN(A1)*RAND()+1, 1)))」
MAKEARRAY関数で、この例だと3✕1セル分、MID関数以下の処理が実施されることになります。
このような入力をすると、結果はスピルされて表示されます。
くっつける
最後に、これらの結果をTEXTJOIN関数でくっつければ完了です。
「=TEXTJOIN(“”,TRUE,MAKEARRAY(3,1,LAMBDA(r,c,MID(A1, LEN(A1)*RAND()+1, 1))))」
A1の中に使える文字列をすべて入れれば、完全に任意のランダムなパスワードを作成することができます。
さいごに
このように、関数の組み合わせだけで、意外とあっさりとランダムなパスワードを生成することができます。
パスワードによっては、指定の文字を最低一つ以上使わなければならない、といったことがありますが、その場合は、生成した後のパスワードを、ランダムに指定文字に置き換えるといった処理をすれば、比較的あっさりと生成が可能です。
パターンに合わせた改善も頭の体操になって有用です。
コメント