excel - 分配等值随机
问题描述
我正在寻找一种方法来做到这一点......
我有一些活动,我需要分发它(15 人 900 次活动),但它必须是等量随机的,我找到了一种随机分发的方法,但它不是等量的。
比我用的公式
=INDEX(A2:A16,RANDBETWEEN(1,COUNTA(A2:A16))
结果不公平
person 1 93
person 2 86
person 3 86
person 4 93
person 5 100
person 6 115
person 7 111
person 8 48
person 9 42
person 10 34
person 11 42
person 12 60
有一种方法可以更公平,因为例如第 7 个人比第 10 个人有更多的活动?
解决方案
试试这个:
Sub croupier()
Dim i As Long, wf As WorksheetFunction
Dim cell As Range
Set wf = Application.WorksheetFunction
For i = 1 To 900
Set cell = Range("B" & wf.RandBetween(1, 15))
cell.Value = cell.Value + 1
Next i
End Sub
典型结果:
该过程是:
- 随机选择B1和B15之间的单元格
- 将单元格的值加一
该过程重复 900 次。
编辑#1:
宏非常易于安装和使用:
- ALT-F11 调出 VBE 窗口
- ALT-I ALT-M 打开一个新模块
- 粘贴这些东西并关闭 VBE 窗口
如果您保存工作簿,宏将与它一起保存。如果您使用的是 2003 年以后的 Excel 版本,则必须将文件另存为 .xlsm 而不是 .xlsx
要删除宏:
- 如上所述调出 VBE 窗口
- 清除代码
- 关闭 VBE 窗口
要使用Excel 窗口中的宏:
- ALT-F8
- 选择宏
- 轻触运行
要了解有关宏的更多信息,请参阅:
http://www.mvps.org/dmcritchie/excel/getstarted.htm
和
http://msdn.microsoft.com/en-us/library/ee814735(v=office.14).aspx
必须启用宏才能使其正常工作!
推荐阅读
- python-3.x - 如何使用 Boto3 在 Windows EC2 实例中创建用户数据?
- unity3d - 如何根据来自不同脚本的变量缩放对象?
- python - 在 Windows 中从 ubuntu wsl 运行 pyspark,错误:找不到 cmd
- javascript - React:关于此处使用 `useRef` 存储先前状态的混淆
- next.js - Next JS Framer 运动淡出
- rest - Apache WebDAV 接受 POST 作为新资源上的 PUT
- android - 将光栅 PSD 转换为矢量,然后导入 Android Studio
- ruby-on-rails - 尝试在 Rails 中添加具有重复索引的条目时避免异常
- android - android中的肥皂网络服务不起作用
- javascript - Discord.js 检查角色而不是权限