=INDEX(A:A,RANDBETWEEN(2,15))
A:A为姓名的范围,RANDBETWEEN()随机抽取的行号
但是这种方法比较呆板,遇到要增加或者减少的姓名的时候,公式需要重新写,比较不方便。而且也没有播放的功能。
用VBA的话,就可以很好的解决上面两个问题。先展示一下效果:
可以看到,无论是增加或者减少姓名,点击“随机点名”的按钮,都可以随机抽取姓名,同时会播放内容。
当然,播放的内容也是可以自定义的,你想播放啥内容都可以~~~
代码如下:
Sub 随机点名()
Dim rng As Range
Set rng = Range("B:B").Find("姓名")
start_row = rng(2, 1).Row
end_row = rng.End(xlDown).Row
i = Int(Rnd * (end_row - start_row + 1)) + start_row
rng(3, 3) = Cells(i, 2)
ssr = "请" & rng(3, 3).Value & "同学回答问题!"
Application.Speech.Speak ssr
End Sub
代码很短,感兴趣的可以在公号内回复「随机点名」自取试用,尽快吧。
星球里的朋友有需求可以提供一对一的解释和定制服务,有问题可以联系我!
相关阅读:
Excel VBA 实例(24) - 新股(债)中签一键批量查询
Excel VBA 实例(23) - 一键批量提取word表格内容
Excel VBA 实例(22) - 一键筛选其他工作表或工作簿的数据
微信公众号:永恒君的百宝箱
个人博客:www.yhjbox.com
转载请注明:永恒君的百宝箱 » Excel VBA 实例(25) – 班级随机点名并播报