プロが教えるわが家の防犯対策術!

5桁から7桁くらいで、英字と数字を組み合わせたランダムな文字列を生成する関数、もしくは数式の記述の仕方を調べています。13pr6y などの文字列がとりあえず1000必要になった場合、どうすればいいでしょうか。よろしくお願いします。

A 回答 (2件)

一番簡単にランダムの文字を打ち出すなら


=CHAR(RAND()*93+33)
この例ではASCIIコードで33-126までを出力します。使いたくない文字があるなら下記URLを参考に数値を適当に変更。
http://www.mars.dti.ne.jp/~torao/program/appendi …

桁数を増やしたかったら「&」でつなげるだけ。
=CHAR(RAND()*93+33) & CHAR(RAND()*93+33)...

まぁ全部ランダムで記述するとユニークになるとは限らないということが問題になる訳で。その為どこかの桁は連番にでもする必要があるわけで、例えば行数でも取得させれば良いのではないかなと。
もし行数でやるなら単純に
ROW()
で行数は取得できますが、桁数を揃えたいのなら行数が1-9、10-99、100-999のケースなどでif文をネストする必要があります。
    • good
    • 0
この回答へのお礼

すごくわかりやすく助けになるご説明、ありがとうございます。早速コードを見ているのですが、数字と英字、英大文字と英小文字との間に、使いたくない文字があります。それらを除外した数式の記述方法がわかりません。WEB上にこの類の情報は少なく、どうしても教えていただきたいのですが。

お礼日時:2003/07/27 15:00

1番ですが。



まぁこれ以上は発想の転換というか、細かく分けてそれっぽくみせる工夫をすれば良いのではないかなと。
例えば
・1桁目はa-zの中でランダム出力として
CHAR(RAND()*25+97)
・2桁目は行数を4桁数値で表した3桁目として
IF(LEN(ROW())=4,LEFT(ROW(),2),IF(LEN(ROW())=3,LEFT(ROW(),1),IF(LEN(ROW())=2,LEFT(ROW(),1),0)))
・3桁目は1-9の中でランダムとして
CHAR(RAND()*9+48)
・4桁目はA-Zの中でランダム出力として
CHAR(RAND()*25+65)
・5桁目は行数を4桁数値で表した4桁目として
RIGHT(ROW(),1)
・・・以下こんな感じで続くと。
    • good
    • 0
この回答へのお礼

休日にこのようにご回答をいただき心底感謝しています。問題は完全に解決しました。さらに今後にも活かせるものを得た気がします。(1700回以上もの回答をされているんですね!)popesyu様、ありがとうございました。

お礼日時:2003/07/28 01:14

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!