ランダムパスワード生成

作成方法はいくつかある
・混在を無視する方法(使用文字数が少ないと「数字だけ」や「小文字と数字だけ」などになる)
・ランダムで選び出す(同じ文字が連続したり複数個出る場合がある)
・順番に選び出す(この方法だと一見ランダムだが昇順にならんでいる)
上記はパスとして使いにくいので

ここでは、VBA(マクロ)を使わず同じ文字を複数使わない、
必ず3種類「数字」「小文字」「大文字」を混在させる方法で作ります。

まずパスワードに使う文字を用意する
例 全部)1234567890(「0」を使う場合先頭にもっていくと消えるので最後に入れる)
例 全部)abcdefghijklmnopqrstuvwxyz
例 全部)ABCDEFGHIJKLMNOPQRSTUVWXYZ
例の全部だと間違えやすい文字があるので、間違えやすい赤い文字は使わない
  A B C
6 数字 23456789 8
7 小文字 abcdefghjkmnprstuvxyz 23
8 大文字 ABCDEFGHJKLMNPRSTUVXYZ 24
「B」列に使用する文字を入れます。
「C」列に使用した文字数を表示。「C2」の数式は =IF(B2="","",LEN(B2))
 ※入力しないときエラーにならないよう IF() を使う。 LEN()は文字数を数えています。

  D E F G H I J K L M N O
9 数字 小文字 大文字 使う桁数計 8  
10 使う桁数 2   使う桁数 3   使う桁数 3   使う文字計 8  
11 使う数字 **   使う文字 ***   使う文字 ***   使う文字計 ********  
データ部分
列 D~F 数字
列 G~I 小文字
列 J~L 大文字
桁数の計算は「数字が1個だけ」や「大文字が1個だけ」というのを避けるため
使用文字数の割合で使う数を決めます。
「K10」の数式は
=ROUNDDOWN(C2*(C8/SUM(C6:C8)),0)
「H10」の数式は
=ROUNDDOWN(C2*(C7/SUM(C6:C8)),0)
「E10」の数式は
=C2-K10-H10
割合を出すにあたってROUNDDOWNを使用してますが3つとも使うと1足りなくなる場合があるので
「E10」の数式は「=C2-K10-H10」全体から引いています。

11行目は下にランダムの数字を用意して呼び出します。
  D E F G H I J K L M N O
12 7 0.153270 6 13 0.459293 p 10 0.584856 K 4 0.742777 7
  ↓  ↓  ↓
37 0.153505 0.459215 10 0.584806 0.742117
数字で10行、アルファベットで26行使います
E、H、K、Nの列でランダムを発生させます。
「E12」~「E21」の数式 =RAND()
同じように「H12」~「H37」、「K12」~「K37」、「N12」~「N37」にも =RAND()
数字の部分で説明
E列に10個のランダムを発生させてD列で RANK()関数を使い順位をつけます

「D12」の数式は
=IF($C$6<1,"",RANK(E12,$E$12:OFFSET($D$12,$C$6-1,1)))
通常のRANK関数は数値と範囲指定ですが、文字数が決まっていないのでOFFSET関数でセルの個数で計算します。
「D13」=IF($C$6<2,"",RANK(E13,$E$12:OFFSET($D$12,$C$6-1,1)))
「D14」=IF($C$6<3,"",RANK(E14,$E$12:OFFSET($D$12,$C$6-1,1)))
「$C$6<1」はエラーを出さないように使用している文字数に応じて消しています

上記数字の「D12」で使用文字がバラバラになるのでその数値を「F12」に表示します
「F12」の数式は
=IF(1>$C$6,"",MID($B$6,D12,1))

この方法で「N11」にランダムな文字列が出来上がります
「N11」の数式は
=O12&O13&O14&O15&O16&O17&O18&O19&O20&O21&O22&O23&O24&O25&O26&O27&O28&O29&O30&O31&O32&O33&O34&O35&O36&O37
「CONCATENATE」関数でも良いのですが SUM関数の sum(O12:O37)のように範囲指定はできないので「&」でも同じ

複数取得したい場合は「M」~「O」列を複数作れば取得できます
またこの方法だと最長26文字ですが「M」~「O」列を増やせば最長62文字までできます。

最後に・・
上記で作成されたパスワードは開くたびに再計算されます。
再計算したくない場合は 数式>計算方法>手動 に設定するか
「N11」をコピーして他のセルに 右クリック>貼り付けオプション(値)で貼り付けてください。

TOPランダムパスワード生成
(C) 2001-2017 Digital World