ここから本文です

Excelシートでマクロを用いてランダム抽選を作りましたが、出てくる数字の順番が毎...

etd********さん

2013/3/1001:26:34

Excelシートでマクロを用いてランダム抽選を作りましたが、出てくる数字の順番が毎回同じです。
出てくる順序もランダムにできるのでしょうか?
(マクロにはあまり詳しくなく、知り合いに教えてもらいました。)

Sub sample()
Dim i As Long, j As Long, myVal As Long
Application.ScreenUpdating = False
j = Cells(Rows.Count, 1).End(xlUp).Row
myVal = Int(((j - 1) * Rnd) + 1) + 1
Range("A" & myVal).Copy Cells(Rows.Count, 4).End(xlUp).Offset(1)
Range("A" & myVal).Delete Shift:=xlUp
Application.ScreenUpdating = True
End Sub

このマクロで、ランダム抽選をつくりましたが、毎回出てくる数字の順番が同じになります。
毎回異なるようにすることはできるのでしょうか?
あまりマクロには詳しくなく、現状のマクロも知人に教えてもらい、作ったものになります。
マクロ以外でもExcelでランダム抽選(1人1回)が作れるようでしたら、教えていただければと思います。
よろしくおねがいします。

閲覧数:
1,863
回答数:
3
お礼:
50枚

違反報告

ベストアンサーに選ばれた回答

nof********さん

編集あり2013/3/1120:14:11

------------------To prsk548さんへ ----------------

回答の度に気になっていたので。

>Dim a, k As Integer
>Dim c, d, j, h, y, x As Integer

この宣言方法ですと.netでは全てIntegerですが、
vbaではkとxだけがIntegerで、他は全てVariant型になっています。
vbaでは個々に型を宣言しないといけません。

こういった宣言方法を初心者の方が見ると誤解を生んでしまうので
あえて書かせて頂きました。

知っていた事であればご容赦下さい。失礼しました。


-------------------------------------------------------

こんばんは。

これを追加して下さい。

Randomize
myVal = Int(((j - 1) * Rnd) + 1) + 1

Randomizeは乱数系列の初期化をします。

同じ数字が不可な場合は、DictionaryやCollectionを使うと簡単に実現出来ます。

"vba 乱数 重複なし" あたりで検索するとサンプルは沢山あります。

それでは。

この質問は投票によってベストアンサーに選ばれました!

ベストアンサー以外の回答

1〜2件/2件中

並び替え:回答日時の
新しい順
|古い順

prs********さん

編集あり2013/3/1110:29:06

欠けない、ダブらない、毎回変則表示の乱数発生コードを紹介します。
下記はトランプを意識して52種ですが a の変数と配列 b() の設定を替えてOKです。

Option Base 1
Sub 乱数()
Randomize
Dim a, k As Integer
a = 52
Dim c, d, j, h, y, x As Integer
Dim b(52) As Integer
h = 1
owari:
j = 0
d = Int(Rnd() * a + 1)
For c = 1 To a
If b(c) = d Then
j = 1
End If
Next
If j = 1 Then
GoTo owari
ElseIf h < a Then
b(h) = d
h = h + 1
GoTo owari
End If
If h = a Then
b(h) = d
End If
For c = 1 To a
Cells(c, 1) = b(c)
Next
End Sub

xia********さん

2013/3/1001:43:24

どこか最初に Randomize して下さい。
この sample() の最初にしてしまうと一応違う結果になりますが、
あまり最適な状況にはならないかもしれません。
ブックのオープンとかがいいと思いますが、わからなければ
Sub sample()
の下に
Randomize

この質問につけられたタグ

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる