将16名玩家分为4组,其中没有人来自同一组

时间:2018-09-07 12:05:33

标签: excel vba

我在4/5位玩家中有16至40位玩家。表示4到10组。

我想绘制top16(我已经将此列表格式化为:)

Name | Former Group (Ex. With 4 Groups)
Player1  | 1
Player2  | 2
Player3  | 3
Player4  | 4
Player5  | 4
Player6  | 3
Player7  | 2
Player8  | 1
Player9  | 2
Player10 | 1
Player11 | 3
Player12 | 4
Player13 | 1
Player14 | 2
Player15 | 4
Player16 | 3

我想单击一个按钮将其分成4组。没有人来自同一早期小组。该组列出了在前一组中排名第一的玩家,然后是第二名,依此类推。因此,如果它的10组(共4组)我的列表看起来像。作为它的第1位第10名和第2位第6名。

    Name | Former Group (Ex. With 10 Groups)
Player1  | 1
Player2  | 2
Player3  | 3
Player4  | 4
Player5  | 5
Player6  | 6
Player7  | 7
Player8  | 8
Player9  | 9
Player10 | 10
Player11 | 3
Player12 | 4
Player13 | 7
Player14 | 5
Player15 | 9
Player16 | 1

我想将这些排名前16位的球员吸引到4个新的小组中,在这些小组中,他们不要与已经在第一轮比赛中打过球的小组分组。

所以我想我会创建一个函数并在单击按钮时调用它。

onClick我想从

收集这些玩家

AA6至AA21(有名称)  AB6至AB21(有以前的组号)

通过我的功能运行它们。

 Private Sub CommandButton11_Click()

    ReDim playerNames(0 To 16) As String
    ReDim playerGroups(0 To 16) As Integer

    For i = 1 To 16
    playerNames(i) = Cells(i + 5, 27).Value
    playerGroups(i) = Cells(i + 5, 28).Value
    Next i


  Dim txt As String
  Dim txt2 As String
  Dim ii As Long


  For ii = LBound(playerNames) To UBound(playerNames)
    txt = txt & playerNames(ii) & vbCrLf
    txt2 = txt2 & playerGroups(ii) & vbCrLf
  Next ii

  MsgBox txt + txt2


End Sub

我该如何创建一个永远不会给我分组的逻辑呢?

然后我想将它们粘贴到

AC6->AC9 (GroupA)
AD6->AD9 (GroupB)
AE6->AE9 (GroupC)
AF6->AF9 (GroupD)

0 个答案:

没有答案