2012年9月16日(日)

エクセルでパスワード生成

Microsoft Excelで0~9とa~z(小文字)を使って任意の桁数のランダムなパスワードを生成しようかと思ったんだけど、全然スマートにできない。これらの文字を使った1桁の乱数なら、以下の計算式で簡単に生成できる。

=IF(RANDBETWEEN(1,36)<11,CHAR(RANDBETWEEN(48,57)),CHAR(RANDBETWEEN(97,122)))

このRANDBETWEEN関数はとても便利だが、「分析ツール」に含まれる関数のため、利用するためには分析ツールアドインの組み込みが必要。それが嫌な場合はより一般的なRAND関数を利用しても、以下のとおり人間の視覚的にはわかり辛い計算式ながら可能。

=IF(RAND()*36<10,CHAR(RAND()*10+48),CHAR(RAND()*26+97))

しかし、いずれにせよ、任意の桁数のパスワードを生成しようとすると、どうしても格好悪い方法しか思い付かない。例えば、上述の計算式のいずれかをA1~A20の20個のセルにそれぞれ入れ、B1に生成したい桁数を入力し、とこかのセルに以下の計算式を入れれば、任意の桁数のパスワードは簡単に生成できるが、これでは生成できる桁数が最大20桁までに制限されてしまうし、そもそも長ったらしくて全然スマートじゃない。なお、VBAを使えば簡単なんだろうが、だったらエクセルでやらずに最初からPerlでワンライナーだって。

=LEFT(A1&A2&A3&A4&A5&A6&A7&A8&A9&A10&A11&A12&A13&A14&A15&A16&A17&A18&A19&A20,B1)

ダッセ俺超ダッセ。でも、"=CONCATENATE(A1:A20)"で範囲指定した文字列を一つに結合できないExcelもいかがなものかと思う。

Posted by 不法電波 at 13:49
Categories: コンピュータ | 楽天
Comments | Trackbacks

TopBottom

Trackbacks

Trackback URL:
http://ventura.pv.land.to/tt-cgi/tt_tb.cgi/197

TopBottom

Comments






保存しますか? Yes No


(URL以外は入力必須、過少コメント・連続投稿は不可)

TopBottom

< 無料ホスティングサーバのPHP | Home