乔山办公网我们一直在努力
您的位置:乔山办公网 > excel表格制作 > Excel随机函数如图,怎么把抽到过的人从下次抽奖的人中删除...-excel抽奖公式,excel random函数抽奖

Excel随机函数如图,怎么把抽到过的人从下次抽奖的人中删除...-excel抽奖公式,excel random函数抽奖

作者:乔山办公网日期:

返回目录:excel表格制作


你需要再加一个初始e799bee5baa6e79fa5e98193e78988e69d83364化按钮,代码如下(commandbutton1就是你的next,commandbutton2是初始化按钮)

Dim arr(), count
Private Sub CommandButton1_Click()
If count <= 29 Then
n = Int(Rnd * (UBound(arr) - LBound(arr) + 1)) + LBound(arr)

TextBox1.Text = arr(n)

Cells(count + 1, 10) = arr(n) '测试代码可删除
Cells(count + 1, 11) = n '测试代码可删除

count = count + 1

arr(n) = arr(UBound(arr))
If UBound(arr) > 1 Then ReDim Preserve arr(1 To UBound(arr) - 1)
Else
MsgBox "所有人员都已抽完"
End If
End Sub

Private Sub CommandButton2_Click()
ReDim arr(1 To 30)
Randomize
TextBox1.Text = ""
For i = 1 To 30
arr(i) = Cells(i, 1)
Next
MsgBox "已初始化"
count = 0
End Sub

我用VBA写过一个,二十几行代码,功能齐全,可以自定义每次抽出来几个人,有抽奖历史记录。可以私信发邮箱给我,我发给你参考。

方法一:公式法

1、我们以生成1-10范围内的随机数字为例,讲述方法。

首先,在A2单元格中输入公式:=SMALL(IF(COUNTIF($A$1:A1,ROW($1:$11))=0,ROW($1:$11)),INT(RAND()*(11-ROW(A1))+1))

然后按下Ctrl+Shift+Enter三键结束数组e79fa5e98193e4b893e5b19e336公式。

2、然后,下拉填充公式到A12单元格,也就是填充11个单元格,为什么要填充11个呢,我们明明只要10个数字?这是因为,最后一个数字是不会变化的,所以呢,要生成10个随机数,需要填充11个单元格,同样的生成11个随机数的话,要填充12个单元格,除此之外,公式中的11还要改成12。

3、生成随机数后,每按下一次F9(或者其他单元格进行一次计算),随机数就会刷新一次,重新生成一组随机数,要注意喽!

4、好了,一组不重复的随机数字生成了,现在我们回头看看这个公式是怎么实现的吧。首先看Small函数的第一个参数,也就是数字区域,这里是利用if和Countif函数来实现此单元格上面的单元格区域,是否有当前单元格的数字,如果有,就返回False,而如果没有就返回这个数字,从而生成一组由上面单元格没有的数字和Flase组成的序列,下图是按F9得到的结果:

5、Small函数的第二个参数,也就是从这个序列中取第几个最小值,在得到的数字中,利用随机函数rand和row函数,实现在这有个个数中随机抽取一个数字,从而得到排序中这个数字顺序的一个数字。通过这样一个数组公式,就实现了生成一组不重复的随机数字啦。

方法二:VBA法

1、VBA功能强大,可以利用很多算法实现随机数。这里介绍一种简单的办法。首先在Excel中按下Alt+F11,打开VBE界面,双击要生成随机数的工作表,在右侧空白处需要输入代码。

输入代码如下:

Sub m()

Range("A:A").ClearContents'这里是A列,根据需要修改

For i = 1 To 10'这里是10个数字,根据需要修改

kkk:

Randomize

x = Int(Rnd * 10) + 1

If Application.CountIf(Range("A:A"), x) = 0 Then

Cells(i, 1) = x

Else

GoTo kkk

End If

Next i

End Sub

2、代码原理很简单,就是随机生成数字,如果A列中有了这个数字,就返回再次随机生成,一直到没有这个数字为止;利用循环生成制定数量的数字。

3、按下F5执行代码,就看到在对应的Sheet中的对应列,生成了一组随机的不重复的数字。



这个问题不需要删除人名。只需要不重复抽奖就可以啦!

  1. 在姓名旁边输入随机数函数:=RAND()。下拉。

Rand函数

2.在随意单元格输入如图所示的函数:

不重复的函数组合

3.下拉后,用countif函数检查是否有重复值。结果发现都显示1,即都是唯一项。

countif函数

全部显示都是 1

相关阅读

关键词不能为空
极力推荐

ppt怎么做_excel表格制作_office365_word文档_365办公网