【めざせExcelマスターへの道】完全にランダムなパスワードを作る

Excel
  • 会社のセキュリティによっては、すべてのアカウントについてランダム且つそれぞれ異なるパスワードの設定が義務づけられます
  • 毎回ランダムなパスワードを作るのが面倒なので、Excelで作る方法を解説します。
スポンサーリンク

基本的な考え方

ランダムなパスワードを作ると言っても、最近はそういったことができるソフトウェアが出回っているので、Excelでわざわざ作らないといけないケースはあまり多くないかもしれません。

ただ、Excelの頭の体操的な発想で、少し考えてみると、意外と面白いので、是非考えてみてください。

基本的な考え方は次の通りです。

  1. 利用できる文字列一覧の中から、ランダムに文字を選び出す
  2. 1.を指定された文字数繰り返す
  3. 繰り返して得られた文字をすべてつなげる

いわれれば当たり前ですが、実装する内容を整理すると上記の通りになります。

実装してみる

ランダムに文字を取り出す

早速実装してみます。まずは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の中に使える文字列をすべて入れれば、完全に任意のランダムなパスワードを作成することができます。

さいごに

このように、関数の組み合わせだけで、意外とあっさりとランダムなパスワードを生成することができます。

パスワードによっては、指定の文字を最低一つ以上使わなければならない、といったことがありますが、その場合は、生成した後のパスワードを、ランダムに指定文字に置き換えるといった処理をすれば、比較的あっさりと生成が可能です。

パターンに合わせた改善も頭の体操になって有用です。

コメント

タイトルとURLをコピーしました