Excelで任意の数字から始まる重複しない乱数を作成する方法

このQ&Aのポイント
  • Excelで任意の数字から始まり、任意の数字で終わる重複しない乱数を作成する方法を教えてください。
  • 以下のページを参考に、重複しない乱数を作成する手順を実施しましたが、乱数の最初の数字が1から始まる場合に限られてしまいます。
  • 質問者は、任意の数字から始まり、任意の数字で終わる乱数を作成したいと考えています。具体的には、6から始まり10で終わる乱数を生成したいとのことです。
回答を見る
  • ベストアンサー

エクセル 任意の数字から始まる重複しない乱数

お世話になります。 エクセル2003/XP 使用です。 RANK関数またはそれに似た利用方法でご教授願いします。 下記ページを参考に、"重複しない乱数”を作成しました。 http://www.relief.jp/itnote/archives/001798.php (ページ中程、▼操作手順:重複しない乱数を作成する 以下の部分) 乱数の最初の数字が1から始まる分には問題なくできるのですが、 乱数の数字を、「任意の数字から始めて」、 「任意の数字で終わる」ようにすることは可能でしょうか? 例えば、下記の例でいうと、 6から始まり10で終わる乱数です。        A列     B列 1行目 / =RAND() / 1-5の範囲でランダムな重複しない乱数 2行目 / =RAND() / 同上 3行目 / =RAND() / 同上 4行目 / =RAND() / 同上 5行目 / =RAND() / 同上 ------------------------------------------------------------ 6行目 / =RAND() / 6-10の範囲でランダムな重複しない乱数 7行目 / =RAND() / 同上 8行目 / =RAND() / 同上 9行目 / =RAND() / 同上 10行目 / =RAND() /同上 (11以下、繰り返し 略) よろしくお願いします。

  • ken123
  • お礼率73% (299/409)

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

  • ベストアンサー
  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.3

回答2です。 6から始まり10で終わる数値でしたね。 その場合にはB1セルには次の式を入力して下方にドラッグコピーします。 =IF(A1="","",RANK(A1,INDEX(A:A,ROUNDUP(ROW(A1)/5,0)*5-4):INDEX(A:A,ROUNDUP(ROW(A1)/5,0)*5,0))+5) 先ほどの式に+5をしただけです。

ken123
質問者

お礼

KURUMITOさま、早速のご回答ありがとうございました。 index + match 関数はやっと少しなれきたところなので、 よい経験になりました。 #1さんの回答にもあるように 5を足すですね。 違う数字をいじってました。助かりました。 今後ともよろしくお願いします。

その他の回答 (4)

noname#204879
noname#204879
回答No.5

A1: =RAND() D1: =SMALL(OFFSET(A$1,INT((ROW(A1)-1)/5)*5,,5,),IF(MOD(ROW(A1),5),MOD(ROW(A1),5),5)) B1: =MATCH(D1,A:A,0)

ken123
質問者

お礼

mike_gさま、画像付きでありがとうございました(^^♪ D列の関数パターン勉強させていただきます 今後ともよろしくお願いします^^

  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.4

B1に =RANK(A1,OFFSET($A$1:$A$5,FLOOR(ROW()-1,5),0))+FLOOR(ROW()-1,5) 以下ずらっとコピー。

ken123
質問者

お礼

keithinさん、いつもありがとうございます。^^ FLOOR関数は初めてでした。 勉強させていただきます。 今後ともよろしくお願いします(^^♪

  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.2

A1セルに=RAND()を入力して下方にドラッグコピーします。 B1セルには次の式を入力して下方にドラッグコピーします。 =IF(A1="","",RANK(A1,INDEX(A:A,ROUNDUP(ROW(A1)/5,0)*5-4):INDEX(A:A,ROUNDUP(ROW(A1)/5,0)*5,0))) 5行の範囲ごとに重複しない1から5までの数値が表示されます。

  • f272
  • ベストアンサー率46% (7994/17081)
回答No.1

「1-5の範囲でランダムな重複しない乱数」を計算したのと同じ方法で出てきた数に5を足せば「6-10の範囲でランダムな重複しない乱数」ができる気がしませんか?

ken123
質問者

お礼

f272さま、早速のご回答ありがとうございました。 できる気がします(^^♪ できました(汗 ありがとうございました^^

関連するQ&A

  • エクセルで重複しない乱数の発生

    今エクセルで正負の数の足し算の100ます計算を作っていたのですが、 どうしても乱数表示をさせている所のどこかで数字が重複してしまい困っています。 なにかいい式はありませんでしょうか? ちなみに乱数の数字の範囲は-10~10にする為に、 =INT(RAND()*(10+10)-10) という式でやっています。 素人質問ですがよろしくお願いします<(_ _)>

  • java 乱数を並べて重複させない方法

    javaのプログラミングについて質問させてください。 まだ勉強し始めの初級者です。 1~25までの乱数を発生させ それらを重複させずに5列×5行に並べたいのですが、 Randomとfor文を使い乱数を発生させる事はできたのですが重複してしまいます。 ネットで調べたらArraylistのcontainsを使う等書いてあったのですが方法が分かりません。 5列×5行というのは ○、○、○、○、○、 ○、○、○、○、○、 ○、○、○、○、○、 ○、○、○、○、○、 ○、○、○、○、○、 という風に並べたいです。(○はすべて違う数字) どなたか分かる方ご教授よろしくお願いします。

    • ベストアンサー
    • Java
  • [Excel]2つの条件がある重複しない数字

    Excelで書類を作っています。 行き詰ってしまったので、どなたか教えてください! よろしくお願いいたします。 1~100の範囲(この範囲は1~3000まで変化します)で、重複しないランダムな数字をRANDやRANKを使って表示させました。 下記の例は5個表示させています。 表示数は1~50まで変化します。 ここまではできました。 問題はその右側の列に、左側の列と同じ条件の範囲で、しかも左側の列と重複しない数字を2個表示させるというのはできますでしょうか? こちらも表示数は1~50まで変化します。 1 100      5    2  1   1    ☆  2  18    ☆  3  38  4  62  5  98  6  7  8  9  ・  ・ 50

  • 【乱数】任意の範囲、固定個数、重複しない乱数

    テニスのダブルス組み合わせ用のスクリプトを考えております。 ネットでいろいろ探して試してみましたが Javascript初心者で、寄せ集めでは限界がありますので質問させてください(;^_^A 【何をしたいのか】 ・テキストボックスで任意の数字(整数)で範囲と行数を指定。 ・結果は数値4個固定とし、4個で1グループ。この4個内は重複がないように。 ・4個1グループを指定の行数分求める。 ・このとき、なるべくならすでに出た数字は後回しにしたい。例えば1~10の範囲としたら、1~10すべて出るまでは一度出た数字は後回しになるように。 ・小さい範囲で大きな行数を指定すれば、必ず同じ組み合わせが出ることは了承。 ・結果は下記のようにしたい。 1,6,8,3 2,4,5,10 9,7,2,3 ・ ・ 3,6,8,1(1行目と同じ組み合わせだが順不同なので可、またはまったく同じのが出ても可) 【現在の状況】 ネットで拾ったサンプルから、何をどのように書き換えたらいいのかわからずです(;^_^A 【サンプルの提示】 ■範囲の乱数■ <HTML> <HEAD> <SCRIPT LANGUAGE="JavaScript"> <!-- function gen_random(num1, num2) { retval=Math.random(); document.write(Math.floor(retval * (num2 - num1)) + eval(num1)); } //--> </SCRIPT> </HEAD> <BODY> <center> <table border=1 cellpadding=4> <form name=myform> <tr><td bgcolor=#ffffe4 align=center> <font color=blue> 乱数の範囲 </td></tr> <tr><td align=center> <input type=text name=d1 size=2 maxlength=2> ~ <input type=text name=d2 size=4 maxlength=4> </td></tr> <tr><td align=center> <input type=button name=btn1 value=乱数発生 onClick=gen_random(myform.d1.value,myform.d2.value)><br> </td></tr> </form> </table> </center> </BODY> </HTML> ---------------------------------------- ■30個を5行ずつ出している <HTML> <HEAD> <SCRIPT LANGUAGE="JavaScript"> var i; for(i=1 ; i <=30 ;i++) { document.write(Math.floor(Math.random()*10) +"<BR>"); if(i%5 == 0) document.write("<HR>"); } </SCRIPT> </HEAD> <BODY> </BODY> </HTML> --------------------------------------------------------- ■重複しない、しかも後回しになる?■ <HTML> <HEAD> <SCRIPT LANGUAGE="JavaScript"> //once_rand: min以上max未満の重複しない乱数を生成するためのオブジェクト function once_rand(min,max){   this.cnt=max-min;   this.arr=[];   //乱数候補を配列に格納   for(var i=0;i<this.cnt;i++){this.arr[i]=min++;} } //乱数を取り出すメソッド once_rand.prototype.next=function(){   if(this.cnt<=0){     //もう乱数候補が残っていない     return undefined;   }   //乱数を取り出す位置を決定   var idx=Math.floor(Math.random()*(this.cnt));   //乱数を取り出す   var rand_val=this.arr[idx];   //重複しないように最後尾の要素で上書き(今のthis.arr[this.cnt-1]は次回以降使われない)   this.arr[idx]=this.arr[this.cnt-1];   //残りの乱数候補が減少   this.cnt--;   return rand_val; } //テスト var rand1 = new once_rand(1,15); //1以上15未満 var str=rand1.next(); while(1){   var rand_val=rand1.next(); //乱数を取り出す   if(rand_val == undefined){break;}   str += ","+rand_val; } alert(str); </SCRIPT> </HEAD>

  • 【エクセル】ランダムで重複しない整数を出したい。

    Windows 7、エクセル2007です。 ランダムで重複しない整数を任意の範囲から一部のみ入力するにはどうしたら良いでしょうか? 1.任意の範囲「1~50」とか「1~100」とか「15~300」とかから、20個だけとか40個だけとか。 2.ランダムなので「2,6,3,4,8,1・・・」とかのn、n+1、n+2ではないランダムな整数。 3.重複しないこと。 上記1~3を満たしたやり方ってありますか? 出てこない数があっても良いんです。 例えば、1~10までの範囲でランダムに3個だけセルに入力したいとき。 A1に7、A2に4、A3に9というふうに。 それが1~300の範囲で50個の数字をランダムに重複しないように入力する。 A1に15、A2に163、A3に92、・・・A50に43。 残りの250個の数字は入力されないという感じです。 乱数だと重複します。 ランク(順位)と組み合わせると、連続(n、n+1、n+2)になってしまいます。 列はどこでも良いんですが、行は連続したいです。 A1~A50とか、A1~A300とか。 関数の組み合わせでできないでしょうか? また、マクロは分からないので、詳しく解説して頂けると助かります! 情報が不足する点がありましたら指摘して下さい。 追加します。

  • エクセルで数字の重複を防ぐ方法

    CからG列に1から12までの数字をランダムに入力しています。 その数字が重複していると困るので、数字が重複していた場合 H列にエラーメッセージが出るようにしたいのですが、良い方法は 無いでしょうか? 200行くらいまで入力する予定です。 よろしくお願いします。

  • エクセルで3ケタの乱数

    今度くじ引き大会をするのに3ケタの数字を250名ほどに配りたいのですが、それぞれの数字が重複なくかつ各桁数の数字が重複しないで乱数をエクセルで生成する方法を教えてください。(例えば、101,221,199などは除外したいです) RAND,RANDBETWEEN関数を使ってみましたが、重複してしまうし、221などのような各桁で数字が重複してしまうものができてしまうのでうまくいきません。 よろしくお願いします。

  • 乱数の出し方で・・・

    たとえば、39人を乱数を使って並べ替えたいのですが、B列以降に名前や必要な項目を書き、A列に=RAND()を入れそれを使って並び替えるのではなく、1から39までの乱数を重複なしに発生させることはできないのですか???

  • エクセルで、任意の数字で乱数表を作りたい・・・。

    関数を使って乱数表を作成する場合 例えば、「『1~100』の数字から8個の数字を選んで乱数表を作成する」とか、「『1~9』の数字を使って乱数表を作る」とかしますが、 そうではなくて、自分が選んだ数字のみで乱数表を作りたいのです。 例えば、「2」「4」「5」「8」「11」「13」「16」という風に数字を選んで、その数字がランダムに出現する乱数表です。 「5 11 2 8 13 5 16 4 4 13 2 8 8 5 11 2 2 2 16 8・・・」 こういう感じの乱数表です。 PCの初心者ですので、ウィザード風にして、次のようにご教示してくださると助かります。   1.・・・・・・・・・・   2.・・・・・・・・・・・・・・   3.・・・・・・・   4.・・・・・・・・・・・・・・・・・・・・   5.・・・・・・   6.・・・・・・・・・・       ・       ・       ・ 関数等に詳しい方 宜しくお願い致します。

  • 同じ数字を2個使用している重複行の数字の出力方法2

    いつも大変お世話になっております。 どなたかご存じの方がお見えでしたら回答頂けると幸いです。 【質問】 2019/12/20 22:51に質問No.9692415として 『同じ数字を2個使用している重複行の数字の出力方法』という質問をさせて頂き、 nishi6様から回答を頂きました。 動作としては添付図のとおり5列×20行の数字の中から、2個の数字が重複していたら黄色でセルを塗り潰し、重複する行に重複した行を、実際に重複した2個の数字をH列~AA列に書き出します。)この時の質問から発展して、『同じ数字を2個使用している重複行の数字の出力方法2』が今回の質問です。 具体的には下記2つです。 (1)重複数字1~重複数字10の2列×20行の数字をAB列・AC列に縦に並べた後、昇順に並び変えて重複数字を削除する。 (2)重複数字1~重複数字10の2列×20行の数字をAE列のみに縦に並べた後、  昇順に並び変えて重複数字を削除する。(又は、(1)で重複数字が削除された数字をAE列に1列に並べた後、昇順に並び変えて重複数字を削除する。) 以上、よろしくお願いします。

専門家に質問してみよう