HOME > エクセル中級 >パスワードの生成

数字のパスワード生成

 それでは4ケタの数字だけのパスワードを生成してみましょう。パスワードの生成にはいくつかの関数を利用します。まずは乱数を発生させる「RAND関数」、次に小数点以下を切り捨てる「INT関数」、4ケタの数字を発生させて先頭が0の時のための「TEXT関数」、この3つの関数を組み合わせて表現します。

=TEXT(INT(RAND()*9999+1),"0000")

 上記の入力で1〜9999までの乱数を発生させて、4ケタで表示することができます。

 とりあえず10個ほど作成します。適当な数字を選びましょう。再計算を押すと、「RAND関数」は再計算します。「F9」ボタンを押すたびに数値が変化します。

RANDBETWEEN関数の準備

 ここからは「RANDBETWEEN関数」を使用します。エクセル2003以前のバージョンであれば、「RANDBETWEEN関数」を使用するのに事前に準備しなければなりません。分析ツールのアドインを組み込むだけなので簡単です。

 メニューの「ツール」-「アドイン」をクリックします。するとアドインのダイアログが現れます。通常何もチェックされていないと思いますが、「分析ツール」のアドインをチェックしましょう。

分析ツールアドイン

 今までに一度でも使用していればそのままエクセルの画面に戻りますが、使ったことがなければ、新しくインストールすることになります。下のダイアログが現れるので「はい」ボタンを押しましょう。後は自動でインストールしてくれます。

アドインインストール

 以上で準備完了です。

数字と英文字を合わせたパスワード生成

 次に数字と英文字の組み合わせのパスワードを生成します。英文字を取り出すのにはCHAR関数を利用しましょう。CHAR関数とは、あらかじめコンピューターに文字に数値が割り当てられているのでその番号を呼び出す関数です。

 英小文字は97〜122、英大文字は65〜90、数字は48〜57の数値が割り当てられています。よってそのコード番号をランダムに呼び出すことによってパスワードを生成することができます。

 文字コードから文字に変換するには「CHAR関数」を利用します。そしてRANDBETWEEN関数を利用して指定区間の間の乱数を発生させます。

数字の0〜9を取り出すには   =CHAR(INT(RAND()*(57-48)+48))
もしくは            =CHAR(RANDBETWEEN(48,57))

大文字のA〜Zを取り出すには  =CHAR(INT(RAND()*(90-65)+65))
もしくは            =CHAR(RANDBETWEEN(65,90))

小文字のa〜zを取り出すには  =CHAR(INT(RAND()*(122-97)+97))
もしくは            =CHAR(RANDBETWEEN(97,122))

 数字・英大文字・英小文字のなかから1文字をRANDBETWEENで取り出します。

=MID(CHAR(RANDBETWEEN(48,57))&CHAR(RANDBETWEEN(65,90))
&CHAR(RANDBETWEEN(97,122)),RANDBETWEEN(1,3),1)

 最後に上の数式を4回くっつけます。

=MID(CHAR(RANDBETWEEN(48,57))&CHAR(RANDBETWEEN(65,90))
&CHAR(RANDBETWEEN(97,122)),RANDBETWEEN(1,3),1)
&MID(CHAR(RANDBETWEEN(48,57))&CHAR(RANDBETWEEN(65,90))
&CHAR(RANDBETWEEN(97,122)),RANDBETWEEN(1,3),1)
&MID(CHAR(RANDBETWEEN(48,57))&CHAR(RANDBETWEEN(65,90))
&CHAR(RANDBETWEEN(97,122)),RANDBETWEEN(1,3),1)
&MID(CHAR(RANDBETWEEN(48,57))&CHAR(RANDBETWEEN(65,90))
&CHAR(RANDBETWEEN(97,122)),RANDBETWEEN(1,3),1)

 これで4ケタの数字・英大文字・英小文字のパスワードが生成されます。しかし、英文字が26種なのに、数字は10種です。それが1/3の確率で出てくるので数字が多くなります。

 純粋な確率で生成したければ、数字・英大文字・英小文字を並べて取り出す方法があります。

=MID("0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopq
rstuvwxyz",RANDBETWEEN(1,62),1)
&MID("0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopq
rstuvwxyz",RANDBETWEEN(1,62),1)
&MID("0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopq
rstuvwxyz",RANDBETWEEN(1,62),1)
&MID("0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopq
rstuvwxyz",RANDBETWEEN(1,62),1)

入力規則のメッセージをカスタマイズ  エクセル職人  郵便番号変換ウィザード

▲TOPへ移動