- 帖子
- 561
- 主題
- 160
- 精華
- 0
- 積分
- 725
- 點名
- 0
- 作業系統
- WINDOWS
- 軟體版本
- xp
- 閱讀權限
- 50
- 性別
- 男
- 來自
- 桃園
- 註冊時間
- 2014-9-10
- 最後登錄
- 2026-2-12
  
|
2#
發表於 2015-7-14 11:05
| 只看該作者
如下引用前輩作品
Sub 亂數不重複()
Const rnd_start = 11 '亂數啟始值
Const rnd_end = 20 '亂數結束值
Const cell_start = 1 '要產生亂數的儲存格啟始列
Const cell_end = 5 '要產生亂數的儲存格結束列
Const Mycol = "A" '要產生亂數的儲存格欄
Dim Buf_rnd As Long '用來暫時存放亂數值,等比對沒有重複後才存入儲存格
Dim i As Long
Dim j As Long
If rnd_end - rnd_start < cell_end - cell_start Then
MsgBox "產生不重複的亂數區間不可以比要產生亂數的儲存格的數值還要少。"
Exit Sub
End If
'產生亂數
For i = cell_start To cell_end
1 Buf_rnd = Int(Rnd() * (rnd_end - rnd_start + 1)) + rnd_start
'如果不是第1個儲存格就要往前比對。
If i > cell_start Then
For j = cell_start To i - 1
'如果重複了就跳到 1 重新產生亂數。
If Buf_rnd = Range(Mycol & j).Value Then GoTo 1
Next j
End If
Range(Mycol & i).Value = Buf_rnd
Next i
End Sub |
|