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

ランダム関数で数字をランダムに入力する事が可能だと思うのですが、
数字ではなく、アルファベットのランダムで入力したいのですが、なにか方法はあるでしょうか??

関数じゃなくても、他の方法でも、ご存知の方いらしたら教えてください。

A 回答 (10件)

AからZまでの文字列をつくり、


数字をランダムで 出すとき、1から26まで出るようにして、
その文字列の何文字目という風にすれば、 数字がアルファベットになります。
    • good
    • 0

次の関数でできます。



=CHAR(INT((RAND()*2600)/100+97))

この回答への補足

皆様ご回答有り難うございます。
しかし、どの方の回答が一番良いのか、理解できないので全然解りません。。。
特に括弧内の数字を引いたりしてるのは
どのような意味があるのでしょうか?

皆様回答が微妙に違うのですが、出来れば、A~Zまで、
満遍なく表示されるのが望ましいです。

宜しくお願いします。

補足日時:2003/01/20 17:25
    • good
    • 0

大文字だけ


=CHAR(ROUND(RAND()*26,0)+65)
小文字だけ
=CHAR(ROUND(RAND()*26,0)+97)
大文字・小文字どちらか
=CHAR(ROUND(RAND()*26,0)+65+ROUND(RAND(),0)*22)

INTを使うと、切り捨てられるので26が出る確率が非常に少なくなりますが、Round()で四捨五入していますから、Zも出やすいはずです。

この回答への補足

皆様ご回答有り難うございます。
しかし、どの方の回答が一番良いのか、理解できないので全然解りません。。。
特に括弧内の数字を引いたりしてるのは
どのような意味があるのでしょうか?

皆様回答が微妙に違うのですが、出来れば、A~Zまで、
満遍なく表示されるのが望ましいです。

宜しくお願いします。

補足日時:2003/01/20 17:25
    • good
    • 0

既に出ているご解答では、


(1)1セルに英文字1字ずつ入れる前提ですが、それで良いのでしょうか。
1セル5文字とか、1-7文字の文字列とかも、希望としてあり得ますね。
(2)Rand()はF9を押す(再計算させる)と値が変ってしまいます。それで良いのでしょうか。
(3)値への置換方法には、形式を指定して値で貼りつけ
やF9キーを使う方法があります。後者は単一セルのみ。
(4)=CHAR(RAND()*(122-97)+97)でも良い。

この回答への補足

皆様ご回答有り難うございます。
しかし、どの方の回答が一番良いのか、理解できないので全然解りません。。。
特に括弧内の数字を引いたりしてるのは
どのような意味があるのでしょうか?

皆様回答が微妙に違うのですが、出来れば、A~Zまで、
満遍なく表示されるのが望ましいです。

宜しくお願いします。

補足日時:2003/01/20 17:21
    • good
    • 0

#2です。

自分の回答はさておいて、
#3、若しくは#4の方のご回答でよろしいかと。

括弧内の数字の加減は、アルファベットの文字

コード番号 65=A、66=B、・・・ 90=Z
      97=a、98=b、・・・122=z

を 関数 CHAR() に代入するためです。

A~Zまで満遍なく表示されます。
ちなみに#2でも
  =CHAR(INT(INT(RAND()*2600/100)+97.5)
とすれば問題ありません。

要は、CHAR()関数の括弧内に文字コードをランダムに
発生させる処理方法の違いです。

#4の方がおっしゃる1セル5文字なども応用編です
1字を表示させる式を必要文字数分つなげればOKです
再計算されれば表示文字は変わりますが、VBなどを
使い 形式を選択して値を貼り付け すればOKです
 ↓
Selection.pasteSpecial  Paste:=xlValues,Operation:=xlNone,

以降の処理方法は、rikamiさんの使用実態に応じて
当然変わっていきます。

参考URL:http://www.kanzaki.com/docs/jiscode.html
    • good
    • 0

#3です。

間違っていました。訂正します。
#2、#4さんが正解です。
CHAR()関数に入れる数値は大文字なら65-90なのでRAND()で作る数値は0-25です。私の場合、0-26になってしまいます。

=CHAR(ROUND(RAND()*26,0)+65) は間違いで
「*26」は「*25」が正しかったです。
=CHAR(ROUND(RAND()*25,0)+65)
=CHAR(ROUND(RAND()*25,0)+97)
=CHAR(ROUND(RAND()*25,0)+65+ROUND(RAND(),0)*22)
が正解でした。

 CHAR()関数は引数に数値を入れると文字を得られる関数です。
 #5さんが書かれているように、半角アルファベット大文字が65-90、小文字が97-122です。
  ご自分で試してみてください。全ての文字には番号が振ってあるのです。
  ちなみに =CODE("A")とすると65が得られます。
    エクセルヘルプの例をご覧ください。

そこで、0以上1未満の数値を作るRAND()関数に25をかけると0以上25未満の数値ができます。それを四捨五入(ROUND関数)したのが#4さんとわたしが訂正した式です。
#2さんの場合、26をかけていますがINT関数は小数点以下切捨てなので0~25が作られる仕掛けになっています。
#3の式の場合、26をかけ四捨五入しているので0~26となり、大文字の場合「[」、小文字の場合「{」が出てきてしまいます。

以上、混乱の原因を作り申し訳ございませんでした。>ALL
    • good
    • 0

ご解答の関数式のなかに、Round()を使う解答が


あります。ふと思ったのですが、最初の0の出現頻度が、等しくならないことはないでしょうか。
切り捨てなら問題ないと思うが。()内は正の数だと思うが、0.0-0.4で0、0.5-1.4で1になるので。私の考えはおかしいでしょうか。ご存知でしたら、どなたか教えてください。
    • good
    • 0

#2です。


Round 関数は、指定した小数桁数を含む数値を返すには便
利ですが、処理される端数が 5 である場合の結果を常に予
測できるわけではありません。端数の処理方法は、内部処
理における数値のバイナリ表示によって異なります。
一方、Int関数は常に倍精度浮動小数点の数値を返します。
従って、Int(○○+0.5)という処理にしている訳です。

この回答への補足

大変勉強になります!
何だか盛り上がってるのでもう少し締め切りません。

本当に勉強になります!

補足日時:2003/01/22 21:25
    • good
    • 0

#3です。

#7さんのご指摘通りです。
Rand関数で0-25を1万個作り数えてみました。
0と25は他の半分ほどしか出現しませんでした。
今回はいろいろと勉強になりました。

この回答への補足

大変勉強になります!
何だか盛り上がってるのでもう少し締め切りません。

本当に勉強になります!

補足日時:2003/01/22 21:25
    • good
    • 0

#7のものです。

やはりそうでしたか。テストの労、ご苦労様でした。またご自分のご解答について、結果をご公表されたことはご立派なものと思いました。今後ともよろしく。

この回答への補足

大変勉強になります!
何だか盛り上がってるのでもう少し締め切りません。

本当に勉強になります!

補足日時:2003/01/22 21:24
    • good
    • 0

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