- ベストアンサー
Excelの表作成について
Excelの表作成について Excelの表で、1~50までの数字から3つの数字を抽出し、20通りの異なる組み合わせのグループを作成したいです。 例えば「1,34,42」「5,20,18」など、数字は連番ではなくランダムに抽出したいです。 そのうえ同じグループ中は異なる数字で構成したいです。 (例えば「23,8,23」のように、同じ数字は入れたくない) そのような数字の抽出に使用できるような関数や数式があれば教えてください。 宜しくお願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
作業列を使用して、関数だけでやる方法です。 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を下にコピーすればよいです。
その他の回答 (2)
- kagakusuki
- ベストアンサー率51% (2610/5101)
今仮に、抽出した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」)
- ziziwa1130
- ベストアンサー率21% (329/1546)
一例です。 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組が入ります。