• ベストアンサー

エクセルで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)

  • cyoki_par
  • ベストアンサー率28% (9/32)
回答No.1

A列に行1から行100までに0の数字を入力しておく。 各マスには、1~100の乱数を発生させ、A列のその行の数字が0なら、その値を入れて、A列の数字を1にする。 A列の数字が1なら、もう一度乱数を発生させる。 最後の方は時間がかかりますが、これでできると思います。 もっと工夫をすることができますが・・・。

taiwanhaiz
質問者

お礼

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

関連するQ&A