• ベストアンサー

エクセルで5ずつ累加の乱数を生成したい

5行ごとに乱数による順列を生成したいのです。 データが800ほどあり手作業ではしんどいので、いろいろと工夫しているのですがうまくいきません。 良い方法があれば教えてください。よろしくお願いします。 A列     B列 1    4 2    3 3    5 4    2 5    1 6    10 7    6 8    9 9    8 10    7 11    15 12    13 13    11 14    12 15    14 16    19 17    20 18    18 19    16 20    17

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

  • ベストアンサー
noname#99913
noname#99913
回答No.3

B1に、 =RANK(C1,INDIRECT("$C$"&1+INT((ROW()-1)/5)*5&":$C$"&INT((ROW()-1)/5)*5+5))+INT((ROW()-1)/5)*5 C1に、 =RAND() と入力後、2つのセルを下へ必要なだけコピー。 この方法ではA列は使いません。A列を使う場合は、「ROW()」を「A1」に書きなおしてください。

ei60
質問者

お礼

わ~、ものすごい数式ですね。 早速のご回答ありがとうございました。 ぴったりとうまくいくので感心しました。 その度に違う乱数の数列が作れるので便利です。 ありがとうございました。

その他の回答 (2)

  • zongai
  • ベストアンサー率31% (470/1474)
回答No.2

データがA1から始まっているとして C列を使わせて頂く案を。 =RAND()+CEILING(A1,5) RAND()は「0~1」の間で乱数を発生します。 CEILINGで、A列の数値を、5の倍数に近い数字に切り上げます。 1~5行目までは「5」、6~10行目までは「10」という結果になります。 これを足すことにより、C1~C5までは「5プラス乱数(小数)」、C6~C10までは「10プラス乱数(小数)」となります。 最後に、B~C列を選択肢、「並べ替え」で、C列昇順とすると、お望みの結果になると思います。 (用済みになったC列を削除) やや手間かも知れませんが、試してみて下さい。

ei60
質問者

お礼

早速のご回答ありがとうございました。 ぴったりとうまくいきました。 ついでに欲張ってもう1列横に別に乱数を作りました。 1時間ほどあれこれ試してうまくいかなかったので本当に嬉しいです。 CEILINGという関数初めて知りました。覚えておきます。 ありがとうございました。

  • laputart
  • ベストアンサー率34% (288/843)
回答No.1

A列は1から1つずつ増加 B1に =INT(RAND()*5)+INT((A1-1)/5)*5 前半は乱数(0~1)を発生させて5倍して小数点以下切捨てたもので 0から4の乱数になります。 後半は5ずつ増加の計算式です。 これをそのままコピーすればよいです。

ei60
質問者

お礼

早速のご回答ありがとうございました。 うまくいったと思ったら0が出てきたり、重複もありました。 私のやり方がまずいのかもしれません。 上の方のやり方で解決しました。 ありがとうございました。