• ベストアンサー

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

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

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

  • ベストアンサー
  • KenKen_SP
  • ベストアンサー率62% (785/1258)
回答No.9

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

taiwanhaiz
質問者

お礼

KENKENSP様、このたびは愚問にもかかわらずご丁寧にご返答頂きまことにありがとうございました。おかげ様で問題は無事、完全に解決いたしました。さすがでございます。恐れ入りました。ご教授に心から深く深く感謝申し上げます。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (11)

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.12

乱数を作る方法で、(重複する値を最初から排除するために)よく値を交換する方法がでてくるけど、 一般的には、交換する方法では均等な乱数が得られない。 例えば、 A,B,Cという3つの値が有った時に、 交換元の値をランダムに3つから1つ選び 交換先の値をランダムに3つから1つ選んだとすると 交換される組み合わせは全てで9通りある。 ところが、A,B,C3つを並べる組み合わせは6通りだから交換の結果は均等な結果にならない。 参考までに。

taiwanhaiz
質問者

お礼

BLUEPIXY様、このたびは愚問にもかかわらずご丁寧にご返答頂きまことにありがとうございました。おかげ様で問題は無事解決いたしました。ご教授に深く感謝申し上げます。

全文を見る
すると、全ての回答が全文表示されます。
noname#223623
noname#223623
回答No.11

#10また間違ってしまった。 > For i = 1 to SHUFFLE_TIME_time For i = 1 to SHUFFLE_TIME でした。

全文を見る
すると、全ての回答が全文表示されます。
noname#223623
noname#223623
回答No.10

なんだかVBAが盛り上がってきたみたいなので自分も書いちゃいます。考え方としては 1. 配列に1~100を順番に入れておく 順番に入れておくので重複はあり得ない。したがって重複チェックは必要ない。重複チェックをすると後にいくほどretryが増えるので時間がかかります。 2. 配列の2要素の値を入れ換える 配列のm番目とn番目の値を入れ換える。mとnはRnd関数で決める。たまたまmとnが同じでもエラーにはならない(同じ値を代入するだけなので)。 3. 配列の値をA1のセルから順番に入れていく 実際に書くとこんな感じ。でもExcel持ってないので確認できない。細かいところで間違ってるかも(考え方はいいと思う)。 Private Sub make_table()  Dim numbers(100) As Integer  Dim swapindex(2) As Integer  Dim tmpval As Integer  Dim i As Integer  Const SHUFFLE_TIME = 1000 ' シャッフルする回数(この値は適当に決める)  ' 配列numbersに1から100までの数値をいれる(この時点では順番どおり)  For i = 0 to 99   numbers(i) = i + 1  Next  ' 配列の値をSHUFFLE_TIMEの回数入れ換える  For i = 1 to SHUFFLE_TIME_time   swapindex(0) = numbers(Int(Rnd * 100))   swapindex(1) = numbers(Int(Rnd * 100))   tmpvalue = numbers(swapindex(0))   numbers(swapindex(0)) = numbers(swapindex(1))   numbers(swapindex(1)) = tmpvalue  Next  ' 配列の値を順番にセルに入れる(ここではA1から右に続くようにした)  For i = 0 to 99   Cells(((i \ 10) + 1), ((i mod 10) + 1)).Value = numbers(i)  Next End Sub

全文を見る
すると、全ての回答が全文表示されます。
  • kigoshi
  • ベストアンサー率46% (120/260)
回答No.8

VBAでのソース例です。 Private Sub 乱数() Dim rIdx As Integer Dim cIdx As Integer Dim rRnd As Integer Dim cRnd As Integer Dim pivN As Integer For rIdx = 1 To 10: For cIdx = 1 To 10 Cells(rIdx, cIdx).Value = cIdx + (rIdx - 1) * 10 Next: Next For rIdx = 1 To 10: For cIdx = 1 To 10 rRnd = Int(Rnd * 10) + 1 cRnd = Int(Rnd * 10) + 1 pivN = Cells(rIdx, cIdx).Value Cells(rIdx, cIdx).Value = Cells(rRnd, cRnd).Value Cells(rRnd, cRnd).Value = pivN Next: Next End Sub

taiwanhaiz
質問者

お礼

kigoshi様、このたびは愚問にもかかわらずご丁寧にご返答頂きまことにありがとうございました。おかげ様で問題は無事解決いたしました。ご教授に深く感謝申し上げます。

全文を見る
すると、全ての回答が全文表示されます。
回答No.7
taiwanhaiz
質問者

お礼

harukabcde様、このたびは愚問にもかかわらずご丁寧にご返答頂きまことにありがとうございました。おかげ様で問題は無事解決いたしました。ご教授に深く感謝申し上げます。

全文を見る
すると、全ての回答が全文表示されます。
  • tresbien
  • ベストアンサー率51% (51/99)
回答No.6

No4です ごめんなさい。上手くいかないですね。 値が重複します。

全文を見る
すると、全ての回答が全文表示されます。
noname#223623
noname#223623
回答No.5

#3です。間違いがありました。 > あとは100x100の表に貼りつける。 10x10の表でした。 ちなみに#3のやりかただと値が重複することはありません。

全文を見る
すると、全ての回答が全文表示されます。
  • tresbien
  • ベストアンサー率51% (51/99)
回答No.4

A1:A100に1から100まで入力する。 B1:B100にはすべて0.01を入力する(発生確率です) この準備をしてツール-分析ツール-乱数発生を使います。 分布のボックスで離散を選び、値と確率の範囲を先のA1:B100にすればいいです。 出力範囲はあなたの好きな10行10列の100個のセルを指定します。

taiwanhaiz
質問者

お礼

tresbien様、このたびは愚問にもかかわらずご丁寧にご返答頂きまことにありがとうございました。おかげ様で問題は無事解決いたしました。ご教授に深く感謝申し上げます。

全文を見る
すると、全ての回答が全文表示されます。
noname#223623
noname#223623
回答No.3

1. A1~A100に1~100の数字を入力 2. B1~B100に"=rand()"を入力 3. B1~B100をコピーしてC1~C100に「形式を選択して貼り付け」で値のみ貼り付け。 4. C列で並び替え これでA列がランダムに並ぶ。あとは100x100の表に貼りつける。再計算すればB列の値が変わるのでふたたび3,4を行えばいくらでも表が作れる。3と4の手順をマクロで登録しておくと便利。 VBAが使えればもっとスマートになるけどね。

taiwanhaiz
質問者

お礼

masapee様、このたびは愚問にもかかわらずご丁寧にご返答頂きまことにありがとうございました。おかげ様で問題は無事、完璧に、解決いたしました。さすがです。すばらしいです。ご教授に深く感謝申し上げます。

全文を見る
すると、全ての回答が全文表示されます。
  • POKIE
  • ベストアンサー率33% (266/784)
回答No.2

こんにちは すべてのセルに =RAND() を入力。これですべてのセルに0~1の乱数が入力されました。(ここではA1:J10としておきます。) 次に別の場所に =RANK(A1,$A$1:$J$10) と入力し、同じく10X10セル分ドラッグすればそのセルの順番が、1~100まで出せます。 注意点 1、理論的に数値が重複することがあるのかもしれないですが(よくわかりません)、100マス程度では問題ないかと思います。 2、ほかのセルを触るごとに数値が自動計算されるのがうっとうしい。(意味がわからないと思いますが、やってみればわかります)

taiwanhaiz
質問者

お礼

POKIE様、このたびは愚問にもかかわらずご丁寧にご返答頂きまことにありがとうございました。おかげ様で問題は無事解決いたしました。ご教授に深く感謝申し上げます。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • エクセルで「1~15」の乱数表を作りたい。

    エクセルで、「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やエクセルや関数に詳しい方、宜しくお願いいたします。

  • エクセルの使い方

    エクセルで、いくつもの重複した数字(縦にずらーとある)を消して1つずつにして、上のマスにそろえたいのですが、 例えば、 12345 12345 23456 23456 24567 を 12345 23456 24567 のような感じにしたいのですが、できますか? 教えてください。

  • 9マスの計算問題

    縦3、横3マス(セルA1~C3)に1~9までの数字が1個ずつランダムに入っています。中心(セルB2)の数字は見ることが出来ますが、それ以外のマスはブラックボックスとなっていて何の数字が入っているか分かりません。 ただし、縦1列ずつの合計、及び横一列ずつの合計は 分かっています。その場合の隠された8マスにはどの様に数字が入るか?という問題です。 Excelの関数だけで(マクロを使用しないで)可能でしょうか? 問題例  A B C D 1 ○ ○ ○ 15 2 ○ 3 ○ 12 3 ○ ○ ○ 18 4 15 14 16 回答例  A B C D 1 9 4 2 15 2 1 3 8 12 3 5 7 6 18 4 15 14 16

  • エクセルで一つのマスに、12,000,000円 と記入したい

    エクセルで一つのマスに、12,000,000 と記入し(縦は中央の位置、横は右側)、その同じマスの右上に、円 を記入していのですが、どのようにしたらよいでしょうか?

  • マスの和の問題

    まずは添付のマスをお読みください。 この9マスにはすべて数字が入っています。分かっている3つの数字がマスの中に示されています。 このマスの縦、横、斜めの3つの数字の和が全て等しくなるとき、この値を求めなさい。 このような問題に取り組んでますが、解は66で答えに書いてあるのでわかるのですが解き方がわかりません。わかる方いらっしゃいましたらおねがいいたします。

  • 4つのセルを1つの塊り(マス)と捉えて塗潰す方法2

    どなたかご存知でしたら回答をよろしくお願いします。 【質問】 下図の様に、a~n、1~10の合計140個のセルに数字が1~99迄の重複有りで 入っています。a1,a2,b1,b2の4つのセルで1つのマスとみなすと、 140個のセルは縦:5マス、横:7マスの合計35マスとなります。 この条件で、検索値欄に1つ数字を入れたら、 一致した数字が入っているマス(4つのセルの集合)を塗潰すにはどうすればよいですか? 具体的には、1つのマスに一致した数字が2個以上重複している場合は、赤く塗り潰す。 1個の場合は黄色く塗り潰す事がしたいです。 〇例題  a b c d e f g h i j k l m n 1 02 05 08 09 14 13 15 16 17 28 22 32 33 37 2 03 03 05 14 13 28 99 31 23 32 31 36 32 37 3 05 01 07 06 15 07 20 08 26 12 27 19 32 37 4 04 03 08 10 10 14 12 17 24 18 30 22 37 24 5 08 01 13 02 16 04 25 09 28 15 34 24 36 34 6 01 06 05 12 18 14 22 19 23 30 26 35 28 36 7 02 03 04 11 06 16 20 21 25 26 29 27 31 29 8 07 07 08 10 09 14 17 15 18 21 19 26 20 34 9 01 02 10 04 11 05 18 13 27 20 28 33 30 34 10 12 11 16 14 19 24 24 25 27 26 33 32 35 35 検索値:07 【結果】 検索値に07を入れたら、下記の3マス(12セル)が塗潰される。 c3,d3,c4,d4 ・・・ 1個一致なので、黄色で塗潰される。 e3,f3,e4,f4 ・・・ 1個一致なので、黄色で塗潰される。 a7,b7,a8,b8  ・・・2個一致なので、赤色で塗潰される。 〇注意事項  ・使用するエクセルは2010です。  ・1マス=4セルです。※a1,a2,b1,b2で1マスです。  ・セルに入っている数字はランダムで、同じ数字の重複は35マス(140セル)全体で   4個迄です(1つのマスに4個入る事も有るし、4つのマスに1個ずつ入る事も   あります。)  ・検索値欄に入力できる数字は1~99迄の1つです。  ・セルの数字は表示上、2桁で表しています。(例:1ではなく01) 以上、よろしくお願いします。

  • 4つのセルを1つの塊り(マス)ととらえて塗潰す方法

    どなたかご存知でしたら回答をよろしくお願いします。 【質問】 下図の様に、a~n、1~10の合計140個のセルに数字が1~99迄の重複有りで 入っています。a1,a2,b1,b2の4つのセルで1つのマスとみなすと、 140個のセルは縦:5マス、横:7マスの合計35マスとなります。 この条件で、検索値欄に1つ数字を入れたら、 一致した数字が入っているマス(4つのセルの集合)を塗潰すにはどうすればよいですか? 〇例題  a b c d e f g h i j k l m n 1 02 05 08 09 14 13 15 16 17 28 22 32 33 37 2 03 03 05 14 13 28 99 31 23 32 31 36 32 37 3 05 01 07 06 15 07 20 08 26 12 27 19 32 37 4 04 03 08 10 10 14 12 17 24 18 30 22 37 24 5 08 01 13 02 16 04 25 09 28 15 34 24 36 34 6 01 06 05 12 18 14 22 19 23 30 26 35 28 36 7 02 03 04 11 06 16 20 21 25 26 29 27 31 29 8 07 07 08 10 09 14 17 15 18 21 19 26 20 34 9 01 02 10 04 11 05 18 13 27 20 28 33 30 34 10 12 11 16 14 19 24 24 25 27 26 33 32 35 35 検索値: 07 【結果】 検索値に07を入れたら、下記の3マス(12セル)が塗潰される。 c3,d3,c4,d4 e3,f3,e4,f4 a7,b7,a8,b8 〇注意事項  ・使用するエクセルは2010です。  ・1マス=4セルです。※a1,a2,b1,b2で1マスです。  ・セルに入っている数字はランダムで、同じ数字の重複は35マス(140セル)全体で   4個迄です(1つのマスに4個入る事も有るし、4つのマスに1個ずつ入る事も   あります。)  ・検索値欄に入力できる数字は1~99迄の1つです。  ・セルの数字は表示上、2桁で表しています。(例:1ではなく01) 以上、よろしくお願いします。

  • エクセルで作った表のマスを広げるには

    エクセルで作った表の1マスを2行分の大きさに広げるにはどうすればよいでしょうか? マスの中でエンターキーを押すと、カーソルが下のマスに移動してしまいます。

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

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

  • EXCELの乱数表

    以下の作業なんですがやり方がわからないんで教えてください!お願いいたします!! 乱数表を作って、乱数表を利用し2個の数字を取り出す。(AとB) ↓ その取り出した数字を取り出した順に並べ、一つの数値とする。(AB) ↓ それらをデータXに変換する。 乱数AB |00|01~06|07~30|31~68|69~92|93~98|99 データX |-3|  -2 |  -1 |   0  |  1  |  2  |  3 ↓ 上記を繰り返し、大きさN=4の標本を100個作製する。 よろしければ以上のやり方を教えていただけると幸いです。 当方EXCEL初心者で、さっぱり困ってます!(><) よろしく願いいたします!

専門家に質問してみよう