请推荐一个随机分组的软件
本帖最后由 jackiesusan 于 2025-3-27 00:38 编辑比如A级有1,2,,3,三位选手,B级有a,b,c三位选手,C级有甲乙丙三位选手。
软件输入后,会自动的随机从三个级别中挑选一个选手进行组队,共组成3支队伍(比如1队是1b丙)。
在Excel中实现三级别选手随机组队,可以通过以下步骤完成(结合动态数组函数和随机排序功能):
### 一、基础数据准备
1. **构建选手列表**:
- A级:A2:A4 → 1、2、3
- B级:B2:B4 → a、b、c
- C级:C2:C4 → 甲、乙、丙
### 二、生成随机排序序列
2. **对每个级别生成随机排序**:
- 在D2输入公式(A级随机排序):
```excel
=SORTBY(A2:A4, RANDARRAY(3))
```
- 在E2输入公式(B级随机排序):
```excel
=SORTBY(B2:B4, RANDARRAY(3))
```
- 在F2输入公式(C级随机排序):
```excel
=SORTBY(C2:C4, RANDARRAY(3))
```
*原理*:`RANDARRAY(3)`生成3个随机数,`SORTBY`根据随机数对原数据重新排序。
### 三、自动生成组队结果
3. **组合三个级别的随机选手**:
- 在G2输入公式,下拉填充至G4:
```excel
=D2&E2&F2
```
- 结果示例(按F9可刷新):
```
1b甲
2a乙
3c丙
```
### 四、进阶优化方法(动态数组一步到位)
4. **使用单一公式生成所有队伍**:
```excel
=MAP(SEQUENCE(3), LAMBDA(x, INDEX(SORTBY(A2:A4,RANDARRAY(3)),x) & INDEX(SORTBY(B2:B4,RANDARRAY(3)),x) & INDEX(SORTBY(C2:C4,RANDARRAY(3)),x)))
```
*说明*:通过`SEQUENCE(3)`生成1-3序号,`MAP`函数遍历序号,分别从三个级别的随机排序中提取对应位置选手并拼接。
### 五、固定随机结果
5. **锁定分组避免刷新**:
- 选中生成的随机结果 → 复制 → 右键选择「粘贴为值」。
- *提示*:每次需要重新分组时需手动刷新公式(按F9)或重新运行上述步骤。
---
### 最终效果示例
| 队伍 | 组合结果 |
|------|----------|
| 1队 | 1b甲 |
| 2队 | 2c乙 |
| 3队 | 3a丙 |
**优势**:此方法保证每个级别的选手只出现一次,且组队完全随机。通过动态数组函数可一键刷新,适用于活动抽签、实验分组等场景。 Sub RandomTeams()
Dim ALevel() As Variant
Dim BLevel() As Variant
Dim CLevel() As Variant
Dim Teams(1 To 3) As String
Dim i As Integer
Dim RandomIndex1 As Integer
Dim RandomIndex2 As Integer
Dim RandomIndex3 As Integer
' 定义三个级别的选手
ALevel = Array("1", "2", "3")
BLevel = Array("a", "b", "c")
CLevel = Array("甲", "乙", "丙")
' 随机生成3支队伍
For i = 1 To 3
' 随机选择A级选手
RandomIndex1 = Int((UBound(ALevel) + 1) * Rnd)
' 随机选择B级选手
RandomIndex2 = Int((UBound(BLevel) + 1) * Rnd)
' 随机选择C级选手
RandomIndex3 = Int((UBound(CLevel) + 1) * Rnd)
' 组成队伍
Teams(i) = ALevel(RandomIndex1) & BLevel(RandomIndex2) & CLevel(RandomIndex3)
Next i
' 输出结果到Excel工作表
For i = 1 To 3
Cells(i, 1).Value = "队伍" & i & ": " & Teams(i)
Next i
MsgBox "队伍分配完成!"
End Sub
louiszoom 发表于 2025-3-27 14:46
Sub RandomTeams()
Dim ALevel() As Variant
Dim BLevel() As Variant
请问这些在哪个软件里操作呢? jackiesusan 发表于 2025-3-27 21:26
请问这些在哪个软件里操作呢?
vba后台 建立一个按钮 再写进去
页:
[1]