(本次抽奖,使用随机抽取代码,采取两轮随机抽取。第一轮从37名参与者中抽取4名中奖者,第二轮从这4名中奖者中抽取一等奖1名,其余为二等奖。)
代码:
Sub GetRnd()
m = [a1].End(4).Row '获取A列中A1开始单元格的最大行数m
arr = [a1].Resize(m) '读取A列数据到数组arr
n = 4 '指定要提取的数据个数n
If n > m Then MsgBox "n>m Err!": Exit Sub
Randomize '随机种子初始化 以保证每次得到不同的随机序列
For i = 1 To n '遍历提取n个数据
r = Int(Rnd * (m - i + 1)) + i '从剩余数据中得到随机位置r (注意里面剩余数计算用m 不是n)
t = arr(r, 1): arr(r, 1) = arr(i, 1): arr(i, 1) = t
'用临时变量t进行随机位置和当前位置的交换 保证得到随机不重复乱序结果
Next
[b1].Resize(n) = arr '输出结果到工作表
m = [b1].End(4).Row '获取B列中A1开始单元格的最大行数m
arr = [b1].Resize(m) '读取B列数据到数组arr
n = 1 '指定要提取的数据个数n
If n > m Then MsgBox "n>m Err!": Exit Sub
Randomize '随机种子初始化 以保证得到不同的随机序列
[c1].Resize(n) = arr '输出结果到工作表
End Sub