ExcelTip.Net留存知识帖 ---【注:附件之前被网盘供应商清空后,现已修复-现已修复-现已修复为本地下载!】
现在位置:首页 > 我的酷贴 > Excel VBA > n支球队单循环比赛的对阵表(赛程表)

n支球队单循环比赛的对阵表(赛程表)

作者:绿色风 分类: 时间:2022-08-18 浏览:89
楼主
zm0115
另外网站有网友问了一个足球比赛单循环赛事安排。在网上找了些资料,把vb的代码改造到VBA里来了。  贴出来和大家交流一下。
所谓单循环,比如8支球队一起比赛,要保证每个队都碰一次,因此 一共会比7轮,每轮4场比赛。  这样保证每2个队都会打一次,而且不会出现重复。  16支球队同理,打15轮,每轮8场比赛。

单循环排赛程最多支持64支球队.rar

用数组a(i,j)记录交手过的队伍,而数组b(i)则记录本轮安排的队伍。具体程序如下:
  1. Sub aaa()
  2. Dim a(64, 64) As Byte, b(64) As Byte
  3. Dim i As Integer
  4. For i = 1 To 64
  5.     a(i, i) = 0
  6. Next i
  7. nn = Cells(1, 2)
  8. n = WorksheetFunction.Log(nn, 2)
  9. Range("e2:ak65536").ClearContents

  10. For d = 1 To nn - 1

  11.   Cells(d + 1, 5) = "第" & d & " 轮:"

  12.   For i = 1 To 64
  13.     b(i) = 0
  14.   Next i
  15.     m = 5
  16.   For i = 1 To nn
  17.     If b(i) = 0 Then
  18.       b(i) = 1
  19.       m = m + 1
  20.       For j = 1 To nn
  21.         If b(j) = 0 And a(i, j) = 0 Then
  22.         Cells(d + 1, m) = Cells(i + 1, 3) & " vs " & Cells(j + 1, 3) & ""
  23.         b(j) = 1: a(i, j) = 1: a(j, i) = 1
  24.         j = nn
  25.         End If
  26.      Next j
  27.      End If
  28.     Next i
  29. Next d
  30. End Sub
2楼
水星钓鱼
这个学习一下。

免责声明

有感于原ExcelTip.Net留存知识的价值及部分知识具有的时间限定性因素, 经与ExcelTip.Net站长Apolloh商议并征得其同意, 现将原属ExcelTip.Net的知识帖采集资料于本站点进行展示, 供有需要的人士查询使用,也慰缅曾经的论坛时代。 所示各个帖子的原作者如对版权有异议, 可与本人沟通提出,或于本站点留言,我们会尽快处理。 在此,感谢ExcelTip.Net站长Apolloh的支持,感谢本站点所有人**绿色风(QQ:79664738)**的支持与奉献,特此鸣谢!
------本人网名**KevinChengCW(QQ:1210618015)**原ExcelTip.Net总版主之一

评论列表
sitemap