|
求一段羽毛球比赛随机抽签形成的对阵代码
要求1:同一学校的同学不对阵比赛
要求2:如果报名人数增加或减少,代码仍然可用。
详见附件,谢谢。
本帖最后由 zjdh 于 2011-10-30 09:28 编辑
不死循环的办法想出来了: - Sub TEST()
- Dim ARR, BRR(), I%, T%, R%, N%, M%
- Columns("C:D").ClearContents
- ARR = Sheets(2).Range("A2:C" & Sheets(2).Range("A65536").End(3).Row)
- N = UBound(ARR)
- For I = 1 To N Step 2
- T = T + 1
- 10 R = Int(Rnd() * N + 1)
- If ARR(R, 3) <> "" Then GoTo 10
- Cells(T * 3 + 2, 4) = ARR(R, 1)
- Cells(T * 3 + 2, 3) = ARR(R, 2)
- ARR(R, 3) = 1
- 20 R = Int(Rnd() * N + 1)
- If (ARR(R, 3) <> "" Or ARR(R, 2) = Cells(T * 3 + 2, 3)) Then
- M = M + 1
- If M = 100 Then M = 0: TEST '超过100次死循环重来
- GoTo 20
- End If
- M = 0
- Cells(T * 3 + 3, 4) = ARR(R, 1)
- Cells(T * 3 + 3, 3) = ARR(R, 2)
- ARR(R, 3) = 1
- Next
- End Sub
复制代码
|
|