プロが教える店舗&オフィスのセキュリティ対策術

高校生です。
Excelの課題で数字がランダムに出るようにマクロ言語を使って作りたいのですがどのようにしたらいいかわかりません。

シートにランダムに数字を5つ出したくて、別シートに数字などが入力してある状態です。
その別シートから数字をランダムで出力したいです。

どういう風に組み立てればランダムに数字が出てきますか?

A 回答 (4件)

rand関数じゃダメなの?

    • good
    • 0

ランダムな数値を出すRnd関数というものがあります。


1~データ個数分の整数範囲からランダムな数字をRnd関数で出し、そこからセルを指定すればランダムな数字が選べます。
A1~A10に10個のデータが入っていたら、1~10までの乱数を発生させ、
例えば3が出たらA3のデータを出力するといった感じです。
    • good
    • 0

課題を整理します。


別シートにある数字  ⇒ n個
抜き出す数字     ⇒ 5個
として回答します。


RND関数で値をだす ⇒ 0以上、1未満の範囲の値がでる
その値をn倍する  ⇒ 0以上、n未満の範囲の値がでる
その値を切り捨てる ⇒ 0から(n-1)の範囲の整数がでる
その値に1をたす  ⇒ 1からnの範囲の整数がでる

この値を使って別シートにあるリストの?番目の数字を読み込むことができます。(例 2がでたら2番目の数字)
抜き出す数字の個数分(=5回)繰り返します。

できそうですか?

切り捨てて1足すの2工程を、切り上げの1工程では代用してはいけません。RND関数が0をだすことがあり、0は切り上げても0だからです。
おそらく、ここがこの問題の肝だと思います。
    • good
    • 1

こんばんは!



>数字を5つ出したくて、別シートに数字などが入力してある状態です。

というコトなので一例です。
↓の画像のように別シート(Sheet2)のA1~A15セルにデータがあり
その中の5個をランダムにSheet1のA1~A5セルに表示するやり方です。

Sub Sample1()
 Dim myNum As Long
 Dim c As Range
 Dim wS As Worksheet
 Dim myFlg(1 To 15) As Boolean '//←「15」はSheet2のデータ数(A列最終行)★//

  Set wS = Worksheets("Sheet2")
  Randomize
  With Worksheets("Sheet1")
   For Each c In .Range("A1:A5")
    Do
     myNum = Int(15 * Rnd + 1)
    Loop Until myFlg(myNum) = False
     c = wS.Cells(myNum, "A")
     myFlg(myNum) = True
   Next c
  End With
End Sub

こんな感じではどうでしょうか?m(_ _)m
「Excelでランダムで数字が出るマクロの」の回答画像4
    • good
    • 1

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