dポイントプレゼントキャンペーン実施中!

エクセルのセルに、一定の確率で数値や文字を表示させることはできますか?

例えば10%の確率でA、20%の確率でB、30%の確率でC、40%の確率でDといった具合です。

よろしくおねがいします。

A 回答 (2件)

RAND関数とVLOOKUP関数を使ってみたらどうでしょう。


B列に「A」を10%、「B」を20%、「C」を30%、「D」を40%
出現させる例を考えると以下のようなものです。
RAND関数は0から1までの間の乱数を発生させる関数ですから
0から1のでの間をそれぞれ
10:20:30:40になるように分けます。
つまり
(1)0以上0.1未満・・・・・・Aを表示
(2)0.1以上から0.3未満・・・Bを表示
(3)0.3以上から0.6未満・・・Cを表示
(4)0.6以上から1.0未満・・・Dを表示
のような設定を考えます。

これを「表=テーブル」としてシートに書き込みしておきます。

例えば、D1:E4に以下のように記述します

  0   A
0.1   B
0.3   C
0.6   D

まず、A列に乱数を発生させるため、A1に以下の式を記述します。
=RAND()
この乱数に対応してA、B、C、Dを決定することになるので
B1に以下の式を記述します
=VLOOKUP(A1,$D$1:$E$4,2)
VLOOKUP関数では、検索の型を省略した場合(または型が「TRUE」の場合は
「検索値」が見つからない場合は、検索値未満の最も大きい値が返されま
すので、この仕様を利用しています。(ただし検索されるテーブルは昇順で
なくてはいけません)
A1とB1に式を記述したら適当な行数までコピーします。

試しに10000行までコピーし、結果を検証します。
B1001 に=COUNTIF($B$1:$B$10000,"A")/10000を記述し、%表示させます。
B1002 に=COUNTIF($B$1:$B$10000,"B")/10000を記述し、%表示させます。
B1003 に=COUNTIF($B$1:$B$10000,"C")/10000を記述し、%表示させます。
B1004 に=COUNTIF($B$1:$B$10000,"D")/10000を記述し、%表示させます。

それぞれ10%、20%、30%、40%(またはそれにきわめて近い値)
になることが確認できます。
    • good
    • 0
この回答へのお礼

親切・丁寧な回答をどうもありがとうございます。
RAND関数・VLOOKUP関数それぞれについての知識はあったのですが、組み合わせてこういう使い方をするのは初めて知り、奥が深いものだと感心しました。

本当にありがとうございます。

お礼日時:2009/10/18 21:28

表示のタイミングがどうなのかが不明瞭ですが、以下はヒントになりますでしょうか。



・RAND関数で乱数を発生させることが出来る。
  =RAND()
で、0≦x<1 の乱数が出来る。そこから、
  =RAND()*10
とすれば、0≦x<10  の乱数が出来る。

で、=INT(RAND()*10)  としてやれば、
0~9までの整数が出てきます。これでもいいけど分かりやすく、
=INT(RAND()*10+1) としておけば、
1~10までの整数がランダムに出せます。

・どこか別の表に、1~10に対応した表を作っておいて、そこからVLOOKUPで引っ張ってこればどうでしょう。

例)
・A1セルに 1 と入れ、A10セル 10まで。 =ROW()  をA1に入れて下に引っ張ってもいいですが。

・B1セルは、"A" 、B2~B3セルは、"B"、 B4~B6セルは"C"、 B7~B10セルには"D"

このようにして、後は乱数で出した数値を検索値として、この表に対応させてVLOOKUPで引っ張ってくれば良いと思います。


ご意向と違った回答でしたらすみません。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
No2の方からも同様の使い方を教えて頂き解決しました。

こんなに素早く回答いただけて本当に助かりました。またの機会がありましたらよろしくお願いします。

お礼日時:2009/10/18 21:30

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