こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

Excelの表作成について

Excelの表作成について

Excelの表で、1~50までの数字から3つの数字を抽出し、20通りの異なる組み合わせのグループを作成したいです。

例えば「1,34,42」「5,20,18」など、数字は連番ではなくランダムに抽出したいです。
そのうえ同じグループ中は異なる数字で構成したいです。
(例えば「23,8,23」のように、同じ数字は入れたくない)

そのような数字の抽出に使用できるような関数や数式があれば教えてください。

宜しくお願いします。

投稿日時 - 2010-02-26 06:48:18

QNo.5707014

すぐに回答ほしいです

質問者が選んだベストアンサー

作業列を使用して、関数だけでやる方法です。

A1からG1まで、順に、

=INT(RAND()*50)+1
=INT(RAND()*49)+1
=INT(RAND()*48)+1
=C1+IF(C1<MIN(E1:F1),0,1)
=A1
=B1+IF(B1<E1,0,1)
=D1+IF(D1<MAX(E1:F1),0,1)

という式を入力すれば、E1,F1,G1の3つが、求めたいものになります。
あとは、A1:G1を下にコピーすればよいです。

投稿日時 - 2010-02-26 19:21:35

このQ&Aは役に立ちましたか?

2人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.3

 今仮に、抽出した3個の数字がA列、B列、C列のセルに、横並びに表示されるものとし、D列を作業列にするものとし、表示を行う行範囲を1行~20行とします。
 まずA1セルに

=INT(RAND()*50)+1

と入力して下さい。
 次にB1セルに

=MOD(A1+INT(RAND()*49),50)+1

と入力して下さい。
 次にC1セルは後回しにして、先にD1セルに

=MOD(A1+INT(RAND()*48),49)+1

と入力して下さい。
 次にC1セルに

=IF(D1<B1,D1,D1+1)

と入力して下さい。
 最後に、A1~D1の範囲を選択してコピーした後、2行目~20行目にかけて、貼り付ければ完了です。
 この数式は、1~50の範囲の数字の中から、異なる3個の数字を、ランダムに抽出する数式ですが、他の19組と比較して、同じ組合せの有無に関して判定を行っている訳ではありません。
 ですから、何度も計算をやり直して行くと、約619回に1度の割合で、20組の中のどこかに、同じ並び方の組合せが、偶然現れます。(例えば「5,20,18」が2組現れる)
 順番が異なるだけで、同じ数字が揃っている場合も、同じ組合せとみなす場合は、20組の中のどこかに、同じ組合せが偶然現れる頻度は、約113回に1度になります。(例えば「5,20,18」と「18,20,5」)

投稿日時 - 2010-02-27 03:27:37

ANo.1

一例です。
Sub Macro1()
Dim n(1 To 50) As Integer
Dim I As Integer, J As Integer, K As Integer, R As Integer
Randomize
For I = 1 To 50
n(I) = I
Next
Range("A1").Select
For J = 1 To 20
For K = 1 To 3
1000 R = Int(50 * Rnd(1)) + 1
If n(R) = 0 Then GoTo 1000
ActiveCell.Offset(0, K - 1) = R
n(R) = 0
Next
For I = 1 To 50
n(I) = I
Next
ActiveCell.Offset(1, 0).Select
Next
End Sub
このマクロを実行すると、セルA1~C20に3つずつの乱数の組20組が入ります。

投稿日時 - 2010-02-26 08:53:21

あなたにオススメの質問