- Home »
- エクセル関数の技 »
- パスワードを作成する
作成:2013/7/21,更新:2023/3/31
- Excelには乱数を発生させる関数が準備されています。
RAND関数は0以上1未満の数値(小数値)、RANDBETWEEN関数は整数値となります。
なお、Excel2003以前ではRANDBETWEEN関数を使うには分析ツール アドインを組み込む必要があります。
4桁の数字のパスワードを作成してみます
RANDARRAY関数を利用する
[Excel for Microsoft365、Excel2021]
- RANDARRAY関数がExcel for Microsoft365やExcel2021で利用することができます。
詳細はRANDARRAY関数でランダムな数値の配列を返す:Excel関数をご覧ください。
構文は =RANDARRAY([行],[列],[最小],[最大],[整数]) となっています。
4桁の整数値を作成するのに、1000以上、9999以下のランダムな整数値を5行事表示します。
A1セルには =RANDARRAY(5,1,1000,9999,TRUE) と入力しています。
- 頭に0(ゼロ)を使ってもよい場合は、=TEXT(RANDARRAY(5,1,1,9999,TRUE),"0000") としました。
1以上、9999以下の乱数を表示しますが、頭のゼロは非表示になるので、TEXT関数で文字列に変換しています。
RANDBETWEEN関数を利用する
[Excel全バージョンで使用可]
- RANDBETWEEN関数を利用して、1以上9999以下の乱数を発生させ、頭ゼロを表示するためにTEXT関数を使って文字列に変換しています。
A1セルに =TEXT(RANDBETWEEN(1,9999),"0000") と入力して、下方向へコピーしています。
RAND関数を利用する
[Excel全バージョンで使用可]
- =INT(RAND()*(10000-1)+1) → =INT(RAND()*9999+1) で1〜9999の数値を発生することができます。
4桁とするために頭にゼロがくるパターンを考慮してTEXT関数で文字列に変換します。
=TEXT(INT(RAND()*9999+1),"0000") としました。
- 100個パスワードを作成します。
A1セルをオートフィルしてA100セルまでコピーします。
- または、名前ボックスに「A1:A100」と入力して、A1セルに数式を入力して、[Ctrl]+[Enter]で選択範囲に入力を確定します。
- 下図では説明のため 7:96行 を非表示にしています。
- 重複したパスワードがないかを調べます。
B1セルに =COUNTIF($A$1:A1,A1) と入力して、フィルハンドルをダブルクリックします。B100まで数式がコピーされました。
重複するパスワードがある時は2以上の数値が表示されます。
- B1:B100までの結果を黙して判断するのは面倒ですので、C1セルに COUNTIF(B1:B100,">1") と入力します。
C1セルの値が「0」なら重複するものがありませんが、1以上の数値になる時は重複するものがあることになります。
- RAND関数は再計算の度に値が変化しますので、[F9]キーを押して再計算を実行します。
C1セルが「0」になったら、100個の異なるパスワードが作成できたことになります。
- 発生させたパスワードをほかのセルに保存しておく必要があります。
C1セルが「0」になったら、A列を選択して、[コピー]を実行します。
E1セルを選択して、[値の貼り付け]を実行します。
- E列に100個の重複しないパスワードを作成できました。
- 数字に英文字(アルファベット)を組み合わせたパスワードを作成してみたいと思います。
- アルファベットを取り出すのに、文字コードを利用したいと思います。
- 小文字のアルファベットは97〜122、大文字のアルファベットは65〜90、数字は48〜57であるのが分かります。
- 下図はCODE関数を使って横のセルに文字コードを表示しています。
- 文字コードから文字へ変換するにはCHAR関数を利用します。
以降の例では、RANDBETWEEN関数で、それぞれのコード内の乱数を発生させて、1文字を取り出します。
なお、RAND関数での例も併記しておきます。
- 数字の0〜9のいずれかを取り出す
- CHAR(RANDBETWEEN(48,57))
- CHAR(INT(RAND()*(57-48)+48))
- 大文字のA〜Zのいずれかを取り出す
- CHAR(RANDBETWEEN(65,90))
- CHAR(INT(RAND()*(90-65)+65))
- 小文字のa〜zのいずれかを取り出す
- CHAR(RANDBETWEEN(97,122)
- CHAR(INT(RAND()*(122-97)+97))
- さらに、この3文字から1文字をRANDBETWEEN関数でとりだします。
- MID(CHAR(RANDBETWEEN(48,57))&CHAR(RANDBETWEEN(65,90))&CHAR(RANDBETWEEN(97,122)),RANDBETWEEN(1,3),1)
- パスワードの桁数を4とするには、これを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/(26*2+10)=10/62 と比較すると、数字が出る確立が1/3になるので、数字が出やすくなっていると思います。
英数字56個を並べて、この中から1個を取り出す
- 英数字56個を並べて、この中から1個を取り出す方法も考えることができます。
- =MID("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789",RANDBETWEEN(1,62),1)
&MID("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789",RANDBETWEEN(1,62),1)
&MID("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789",RANDBETWEEN(1,62),1)
&MID("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789",RANDBETWEEN(1,62),1)
- 下図はこの数式で取り出した例です。
スポンサードリンク
よねさんのWordとExcelの小部屋 »
エクセル関数の技 »
パスワードを作成する
PageViewCounter
Since2006/2/27