ウォーターサーバーとコーヒーマシンが一体化した画期的マシン >>

エクセルで、「1」から「15」までの15種類の数字を使ってランダムの数列表を作りたいのですが、どのようにすればできますか?

その際、各数字はそれぞれ1個ずつ、一つのセルに入れるものとします。重複しても構いません。
例えば「7」「2」「9」「13」「2」「4」「1」「9」・・・でもOKです。
また、同じ数字が連続するケースの発生もOKです。
例えば、「3」「8」「14」「6」「6」「5」「7」・・・でもOKです。2連続だけでなく、3連続もOKです。

要は「1~15の数字のランダムな出現による乱数表」が作成できればいいのです。

表の範囲は「A7~IV200」までです。

PCの初心者ですので、詳しく丁寧に教えて頂ければ有り難いです。
例えば次のように・・・。

1.・・・・・・・・・
2.・・・・・・・・・・・・
3.・・・・・・・・
4.・・・・・・・・・・・・・・
5.・・・・・・・・・

と、いう風に、順を追ってウィザード風に書いて頂ければ・・・と思います。
PCやエクセルや関数に詳しい方、宜しくお願いいたします。

このQ&Aに関連する最新のQ&A

A 回答 (3件)

(1) A7からIV200までを範囲指定


(2) 数式バーに「=RANDBETWEEN(1,15)」(「」は不要)を入力し、「Ctrl」キーを押しながら「Enter」

その前に、「ツール」メニューから「アドイン」の「分析ツール」にチェックを入れておいてください。

参考URL:http://www.relief.jp/itnote/archives/001184.php
    • good
    • 3
この回答へのお礼

有難うございました。
お陰さまで、簡単に乱数表が作成できました。

お礼日時:2006/11/10 11:21

いろいろな方法があると思いますが、例えば


○A7に=MOD(MID(RAND(),3,2),15)+1 の数式を入れて
IV200までコピー(A7のセルを左クリックして、セルの右下にカーソルを持ってくると+記号になります。そのまま適当な範囲までドラッグします)

●式の意味

☆MOD(数、15) は数を15で割った余りを出します。(0~14)それに+
1をして1~15の数にします。

☆MID(文字列、文字位置、文字数)は 指定した文字列の指定した左からの文字位置から、文字数だけを切り取った値にします。
例えば =mid(0.345675、3,2) は 45

☆RAND()は0以上1以下の数の乱数を発生させます。

なおNO1、NO2 のかたの数式の方が楽ですが、エクセルによってはこのRANDBETWEENが入っていない場合もありますのでご注意ください。
    • good
    • 2
この回答へのお礼

ご回答、有難うございました。
今回は、#1さんに教えて頂いた方法で簡単に作成できましたので、その方法を使いたいと思います。
幸い、RANDBETWEENは入っていました。

お礼日時:2006/11/10 11:34

エクセルの起動、


マウス操作等により指定したセルを選択する、
指定したセルにキーボードから文字を入力する、
等の操作は説明しなくても出来ると想定します。

1:セル[A7]を選択する。
2:セル[A7]に式『=RANDBETWEEN(1,15)』を入力する。(ただし『』は入力しない)
3:セル[A7]を選択して、コピーする。
4:セル[A7]から[IV200]の範囲を選択する。
5:編集メニューから「形式を選択して貼り付け」を選択してダイアログを表示させる。
6:「貼り付け」の形式として「数式」を選択する。
7:ダイアログのOKボタンを押して、貼り付けを実行する。
これで選択した範囲に1~15の乱数が入ります。
しかし、このままだと何か操作するたびに乱数が変わります。
セル[A7]から[IV200]の乱数を固定するには次のようにします。
8:セル[A7]から[IV200]の範囲を選択してコピーする。
9:セル[A7]から[IV200]の範囲を選択する。
  (8のコピーから引き続き操作するなら選択しなおさなくても良い)
10:編集メニューから「形式を選択して貼り付け」を選択してダイアログを表示させる。
11:「貼り付け」の形式として「値」を選択する。
12:ダイアログのOKボタンを押して、貼り付けを実行する。
これでセル[A7]から[IV200]の範囲の乱数が固定されました。
    • good
    • 0
この回答へのお礼

ご回答、有難うございました。
今回は、#1さんの方法で簡単に作成できました。
#2さんにご教示頂いた方法も、これからの参考にさせて頂きます。

お礼日時:2006/11/10 11:26

このQ&Aに関連する人気のQ&A

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

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Q乱数表の定義が理解できません

乱数表は0から9までの数字をランダムに並べた表。どの部分をとっても0~9の数字が同じ確率(1/10)で現れるように作られる。任意抽出その他標本調査や実験計画法に応用される。
と、ありますが、この確立1/10を、どう理解したら良いのでしょうか。

例えば、啓林館の乱数表で、
28
30
95
01
10

05
04
05
84
28

と、並んでいますが、一番左の数字は0が4/10出てますし,
二桁数字を考えても、05が2回出ているので、1/10にならないと思うのです。
どの部分をとっても1/10では無いと思うのですが、教科書が間違っているはずも無いですから、私の考え方がおかしいのだと思います。
どうぞ、お知恵をおかしください。

Aベストアンサー

まず大前提として、乱数表とは、本当に乱数の表なのではなく、
概ね乱数っぽいもの、または、乱数であることを目指している何か
であることを理解しましょう。その上で…

表上で近所にある数の並びを見て、狭い範囲で0~9が均等に
現れてはいけない ことは、ちょっと考えれば解ります。

乱数表の1字目~10字目と、2字目~11字目を比べて、
どちらにも0~9が一個づつ現れていたとしたら、11字目の
数字は1字目と同じということになってしまいます。これを
繰り返すと、その表は10文字周期の規則正しいものになり、
全く乱数ではありません。

表全体として、いろいろな数の並びが均等に現れるためには、
狭い範囲での偏りも各種均等に現れなければならないのです。

質問にある「2桁の数10個中、十の位が0のものが4個」という
事象は、確率 (10C4)((1/10)^4)((9/10)^6) 程度で現れるはずです。
「2桁の数10個」を 90 組ほど表から抜き出せば、一組くらいは
在るのが正しいのです。

Qエクセルで100マスの乱数表を作るには

エクセルで縦10×横10の計100マスで、1から100までの数字(数字の重複なし)で乱数表を作るにはどうすれば良いか。

Aベストアンサー

VBAでやるのが簡単です。以下は重複の無い乱数発生のVBAサンプルです。

【手順】
1. [Alt]+[F11]で Visual Basic Editor(以下VBE)起動
2. [挿入]-[標準モジュール]クリック
3. 下記VBAコードをコピー&ペースト
4. VBEを閉じる
5. [ツール]-[マクロ]-[マクロ]で実行

【VBAコード】(次行から終わりまで)

'10×10の重複しない乱数表
Sub Sample()

  Dim NumberBuf%(1 To 10, 1 To 10)
  Dim intNum%, i%, j%, ItemNum%
  Dim tmpBuf
  Dim Dic As Object

  'Dictionaryオブジェクト生成
  Set Dic = CreateObject("Scripting.Dictionary")
  'Dictionaryの登録数が100になるまでループ
  Do Until Dic.Count = 100
    '1~100までの整数で乱数発生
    intNum = Int((100 * Rnd) + 1)
    'Dictionaryに登録されているか?
    If Not Dic.Exists(intNum) Then
      '登録されていなければ追加
      Dic.Add Key:=intNum, Item:=Empty
    End If
  Loop
  tmpBuf = Dic.Keys
  '乱数を10×10の配列に代入
  ItemNum = 0
  For i = 1 To 10
    For j = 1 To 10
       NumberBuf(i, j) = tmpBuf(ItemNum)
       ItemNum = ItemNum + 1
    Next j
  Next i
  '転記先を変えるにはRange("A1")のA1の部分を変更
  '10×10のセル範囲左上角のセルになります
  Range("A1").Resize(10, 10).Value = NumberBuf

End Sub

VBAでやるのが簡単です。以下は重複の無い乱数発生のVBAサンプルです。

【手順】
1. [Alt]+[F11]で Visual Basic Editor(以下VBE)起動
2. [挿入]-[標準モジュール]クリック
3. 下記VBAコードをコピー&ペースト
4. VBEを閉じる
5. [ツール]-[マクロ]-[マクロ]で実行

【VBAコード】(次行から終わりまで)

'10×10の重複しない乱数表
Sub Sample()

  Dim NumberBuf%(1 To 10, 1 To 10)
  Dim intNum%, i%, j%, ItemNum%
  Dim tmpBuf
  Dim Dic As Object

  'Dictionaryオ...続きを読む

Qエクセルで1から10の数字をランダムに並び替えたいのですが、わかりません。

 エクセルで乱数表をつくる方法があると聞き、やってみましたが、さっぱりわかりません。宿題で使うので困っています。どなたか、教えて下さい。お願いします。

Aベストアンサー

関数を使います
セルに下の式をコピーして
他のセルにコピー→貼り付けしてみてください
元の関数は、0~1の乱数発生です
それを10倍して、切り上げました。
(切り上げでも丸めでも何でも良いとは思いますが)

=ROUNDUP(RAND()*10,0)

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

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とか。

関数の組み合わせでできないでしょうか?
また、マクロは分からないので、詳しく解説して頂けると助かります!

情報が不足する点がありましたら指摘して下さい。
追加します。

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個だけセルに入...続きを読む

Aベストアンサー

No.4・5・6です。
たびたびごめんなさい。

すでに当方の回答よりも良い回答は出ていますが・・・

前回の数式があまりにも長すぎたので少し簡単にしてみました。
作成する表には○から○までの整数だけを表示し、
そのかなからRAND関数の大きい順に「表示数」だけ表示するようにしています。

↓の画像の
G1セルに
=IF(H1="","",RAND())
H1セルに
=IF(C2="","",C2)
という数式を入れオートフィルでしっかり下へコピー!

A1セルに
=IF(COUNTBLANK($C$2:$E$2),"",IF($E$2<ROW(A1),"",VLOOKUP(LARGE(G:G,ROW(A1)),G:H,2,0)))
という数式を入れオートフィルで下へコピーすると
画像のような感じになります。

前回と考え方は同じですが、作業用の表に余計なものを表示しないようにしてみました。

何度も失礼しました。m(_ _)m

Qエクセルで、乱数の関数 同じ数が無いように

乱数を発生させる関数で、RAND関数は、小数点(0~1の間)で、RANDBETWEEN関数は整数で出るとのことですが、RANDBETWEEN関数は同じ数字がいくつか重複して出ます。整数で同じ数が出ないようにする関数はないでしょうか?

Aベストアンサー

そういう関数はありませんが,そういう数字を簡単に並べる方法は沢山あります。


たとえば1から10をランダムに並べるなら。

方法1
A1:A10に =RAND() を記入しておく
B1に =RANK(A1,A:A) と記入し,B10までコピーする。
F9を押すたびに何度でも順序が入れ替わる。


方法2
A1:A10に =RAND() を記入しておく
B1:B10に 1から10までの数字を記入しておく
A列昇順で全体を並べ替える。何度でも。


方法3:
エクセルのオプションで反復計算のチェックを入れ,回数を10000回ほどにしておく
A1に =IF(AND(A1<>0,COUNTIF($A$1:$A$10,A1)=1),A1,RANDBETWEEN(1,10)) と記入し,
A10までコピー貼り付ける。

Qエクセル指定した範囲からランダムで一つ抽出

エクセルの関数についての質問なのですが、

B1~B5に値がならんでいたとして、B1~B5の中からランダムに一つ抽出したものをA3に表示する関数はありますか?

Aベストアンサー

A3に次の式を入力すればよいでしょう。

=INDEX(B1:B5,RANDBETWEEN(1,5))

Q重複しない乱数表を作る関数について

重複しない乱数表を作成したいと思います。
「=RANDBETWEEN(0,50)」では、「0~50」の範囲内で、数字が重複する乱数表ができますが、数字が重複しない乱数表を作成するには、どういう関数を使えばよいですか?
縦方向(つまり「列」)では重複しても構いません。
横方向(つまり「行」)で重複しないようにしたいのです。
つまり、「横方向に0から50までの数字51個が一通り、必ず1個ずつ出現してから、次に同じく、0から50までの51個の数字による新たな数列を、各数字が重複しないように作りたい」のです。
51個の数字による一まとまりの数列内で数字が重複していなければ、これと同じ数値配列が全く別の場所に出現しても構いません。
表の範囲は任意ですが、仮に「B7~N106」とします。

過去の回答を検索しましたが、適切なものがなかったので質問しました。
宜しくお願い致します。

Aベストアンサー

はじめまして
発想を変えて0~51の数字をランダムに並べ替えるというのはいかがでしょうか。
1.A1に0~A51に50の数字を順次入力
2.B1~B51に=rand()を入力
3.B列をキーにして並び替え
これでA列には0~50の数字がランダムに並びます。

その後、A列をコピー&形式を指定して貼り付け(行列を入れ替える)を行えば横に0~51の数字がランダムに並びます。

この作業の繰り返しで質問の表が作れるかと思います。
…同じ作業の繰り返しなのでマクロを使えばもっと楽になります。

QExcelで事前にセルに入力した言葉をランダムに表示

例えばA1に「いぬ」 A2に「ねこ」 A3に「ぞう」 A4に「たぬき」 A5に「きつね」と入力します
次に
B1~B10に 「いぬ」「ねこ」「ぞう」「たぬき」「きつね」のいずれかを自動にランダムに表示する方法を教えてください
こんな便利な機能があれば良いと思うのですが・・・

Aベストアンサー

=INDIRECT("A"&INT(RAND()/0.2)+1)

INT(RAND()/0.2)+1 で1~5までの整数が得られます。
INT(RAND()/0.1)+1 で1~10までの整数が得られます。
INT(RAND()/0.02)+1 で1~50までの整数が得られます。
INT(RAND()/0.01)+1 で1~100までの整数が得られます。

それでA1からA5、A1からA10、A1~A50、A1~A100のセルの内容を取得しています。A2からなら+2にしてください。
F9キーを押すたびに再計算されて、表示も変わります。

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

関数を使って乱数表を作成する場合
例えば、「『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.・・・・・・・・・・
      ・
      ・
      ・

関数等に詳しい方
宜しくお願い致します。

Aベストアンサー

No.2です。
おかしいですね、私の環境では正常に表示されるのですが。

#NAME? とは関数名を間違えていたり、アドインが入ってないのにアドインが必要な関数を使っていたりするときに出るのですが、今回はアドインが必要な関数は使ってません。OFFSET,INT,RAND,COUNTは全部標準で使用できる関数です。

式をそのままコピーして貼り付けたなら、間違うことはないと思うのですが、そのようにされてますでしょうか?

Qテニス(ダブルス)乱数表 Excelマクロ

テニス等のダブルスゲームのペアを決めるための乱数表を作りたいと思い、Web検索したところrio_dさんが作成されたExcelマクロプログラムを見つけました(http://oshiete1.goo.ne.jp/kotaeru.php3?q=1388951)。記載されている通りにマクロを作成しましたが、実行すると「SubまたはFunctionが定義されていません」というコンパイルエラーメッセージが出てしまいます。rio_dさんのマクロプログラムの最初に「Sub 乱数表作成()」がありますが、この( )の中に何かを入力する必要があるのでしょうか。この他にも空白の( )がいくつかあります。マクロについて全くの素人で何も分かりません。このrio_dさんのマクロプログラムを実行する方法を素人にも分かるように解説していただければ幸いです。

【rio_dさんが書かれたマクロは以下の通りです】

<マクロ準備編>
(1)新規ブックを開き、とりあえず名前をつけて保存します。『てにす乱数表.xls』にしましょうか。
(2)メニューバーから、ツール→マクロ→Visual Basic Editorを選択します。
  Visual Basic Editorが起動します。
(3)左側に「VBAProject(てにす乱数表).xls」というのがあると思います。
 ツリー状になっていて、左の[+]で展開していくと、「ThisWorkbook」という
 ものが表示されると思います。
(4)その「ThisWorkbook」をダブルクリックします。
 右側に「~~.xls - Thisworkbook(コード)」というウインドウが表示されます。
(5)そこに、下記のコードをコピー&ペーストしてください。
(6)Visual Basic Editorを閉じます。
(7)ここで一旦上書き保存しておきましょう。

<データ準備編>
(1)セルA1に、コート数を入力してください。数字でお願いします。
(2)セルB1から横方向に、人数を入れていってください。
(3)セルA2から縦方向に、試合数を入れていってください。

こんなかんじ
 _A__B_C_D__E__F__G__H__I__J__K
1|  3  5  6  7  8  9  10  11  12  13  14…
2|  1
3|  2
4|  3
5|  4
6|  5
7|  6
   :

<データ作成編>
(1)メニューバーから、ツール→マクロ→マクロ と選択してください。
(2)実行するマクロの一覧に「ThisWorkbook.乱数表作成」というのがでるので、
  それを選択して「実行」してください。
(3)砂時計が消えたら完成です。


このマクロは実行するたびに結果が変わります。気に入らなかったら何度でも
やり直してください。
また、全セルを消去すれば、データ準備からやり直すことも出来ます。
好きな表をいくつでも作ってください。
ちなみに100人とかデータ数がえらく膨大になると、なかなか計算が終わりませんので。
その場合は気長に待ってください。

'-----マクロ ここから-----
Sub 乱数表作成()
Dim iRow As Integer
Dim iCol As Integer
Dim iCnt As Integer
Dim iCnt2 As Integer
Dim iTmp As Integer
Dim sNum() As String
Dim bChk() As Boolean
Dim bChk2() As Boolean
Dim bFull As Boolean
Dim iCourt As Integer
iCol = 2

Do Until Cells(1, iCol) = ""
iRow = 2
If Cells(1, 1) * 4 > Cells(1, iCol) Then
iCourt = Round(Cells(1, iCol) / 4 - 0.5, 0)
Else
iCourt = Cells(1, 1)
End If
ReDim sNum(iCourt * 4 - 1)
ReDim bChk(Cells(1, iCol))
ReDim bChk2(Cells(1, iCol))
For iCnt = 1 To Cells(1, iCol)
bChk(iCnt) = True
bChk2(iCnt) = True
Next iCnt
Do Until Cells(iRow, 1) = ""
iCnt = 0
Do Until iCnt = iCourt * 4
iTmp = Round(Rnd(Second(Now)) * Cells(1, iCol) + 0.5, 0)
If bChk(iTmp) And bChk2(iTmp) Then
sNum(iCnt) = "[" & Trim(Str(iTmp)) & "]"
iCnt = iCnt + 1
bChk(iTmp) = False
bChk2(iTmp) = False
bFull = False
For iCnt2 = 1 To Cells(1, iCol)
bFull = bFull Or bChk(iCnt2)
Next iCnt2
If bFull = False Then
For iCnt2 = 1 To Cells(1, iCol)
bChk(iCnt2) = True
Next iCnt2
End If
End If
Loop
Cells(iRow, iCol) = sNum(0)
For iCnt = 1 To iCourt * 4 - 1
Select Case iCnt Mod 4
Case 0
Cells(iRow, iCol) = Cells(iRow, iCol) & Chr(10) & sNum(iCnt)
Case 2
Cells(iRow, iCol) = Cells(iRow, iCol) & ":" & sNum(iCnt)
Case Else
Cells(iRow, iCol) = Cells(iRow, iCol) & sNum(iCnt)
End Select
Next iCnt
For iCnt = 1 To Cells(1, iCol)
bChk2(iCnt) = True
Next iCnt
iRow = iRow + 1
Loop
iCol = iCol + 1
Loop
End Sub
'-----マクロ ここまで-----

テニス等のダブルスゲームのペアを決めるための乱数表を作りたいと思い、Web検索したところrio_dさんが作成されたExcelマクロプログラムを見つけました(http://oshiete1.goo.ne.jp/kotaeru.php3?q=1388951)。記載されている通りにマクロを作成しましたが、実行すると「SubまたはFunctionが定義されていません」というコンパイルエラーメッセージが出てしまいます。rio_dさんのマクロプログラムの最初に「Sub 乱数表作成()」がありますが、この( )の中に何かを入力する必要があるのでしょうか。この他にも空白...続きを読む

Aベストアンサー

> この( )の中に何かを入力する必要があるのでしょうか?
   関数なので、カッコは、このままで構いません。【入力不要】

 rio_dさんの通りに、マクロを入力して実行させたところ、
下記のような結果になりました。

3       5       6        7          8

1 [4][3]:[2][1]  [1][5]:[2][3]  [1][2]:[7][3]  [7][3]:[6][1]
                                [2][4]:[5][8]

2 [5][4]:[1][3]  [6][4]:[3][5]  [4][5]:[6][1]  [3][5]:[1][6]
                               [4][8]:[2][7]

3 [5][2]:[1][3]  [2][4]:[1][6]  [2][3]:[4][5]  [7][6]:[8][3]
                               [4][2]:[5][1]

4 [4][2]:[5][3]  [2][5]:[3][6]  [6][7]:[4][1]  [1][7]:[4][2]
                               [6][5]:[8][3]

5 [5][2]:[4][1]  [4][1]:[5][6]  [6][3]:[2][5]  [8][7]:[6][4]
                               [3][1]:[2][5]

6 [5][4]:[1][3]  [1][4]:[3][2]  [7][1]:[4][2]  [4][8]:[2][3]
                                [5][6]:[1][7]

> この( )の中に何かを入力する必要があるのでしょうか?
   関数なので、カッコは、このままで構いません。【入力不要】

 rio_dさんの通りに、マクロを入力して実行させたところ、
下記のような結果になりました。

3       5       6        7          8

1 [4][3]:[2][1]  [1][5]:[2][3]  [1][2]:[7][3]  [7][3]:[6][1]
                                [2][4]:[5][8]

2 [5][4]:[1][3]  [6][4]:...続きを読む


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング