Microsoft Lab
全部软件
Excel循环(Loop)约 6 分钟

Possible Football Matches 列出所有可能对阵组合

重点内容


适用版本

桌面版通用(Excel 365 / 2021 / 2019 等)。


完整 VBA 代码

Dim rng As Range, matchname As String, counter As Integer, i As Integer, j As Integer

Set rng = Range("A1").CurrentRegion
counter = 0

Worksheets(1).Columns(3) = ""

For i = 1 To rng.Count
    For j = i + 1 To rng.Count
        matchname = rng.Cells(i).Value & " vs " & rng.Cells(j).Value
        Cells(counter + 1, 3).Value = matchname
        counter = counter + 1
    Next j
Next i

ActiveSheet.Columns(3).PrintPreview

代码说明

  1. 声明 rng(球队清单范围)、matchname(拼出来的对阵字符串)、counter(已写入的对阵组合数)、i、j(双层循环计数器)
  2. Set rng = Range("A1").CurrentRegion 自动抓取 A1 所在的连续数据区域(整份球队清单),不管清单有几支球队都能自动适应
  3. Worksheets(1).Columns(3) = "" 先清空第 3 列(C 列),准备写入这次的对阵结果
  4. 外层循环 i 从 1 到球队总数,内层循环 j 从 i + 1 开始(不是从 1 开始)——这样能保证每对球队只会被组合一次,也不会出现「球队自己对自己」的情况
  5. matchname = rng.Cells(i).Value & " vs " & rng.Cells(j).Value 用 & 把两支球队名字拼成 "球队A vs 球队B" 的字符串
  6. 把拼好的对阵写入 C 列的第 counter + 1 行,counter 加 1,让下一组对阵往下一行写
  7. 双层循环跑完后,用 ActiveSheet.Columns(3).PrintPreview 直接打开 C 列的打印预览,方便查看/打印完整对阵表

怎么运行

在 A 列从 A1 开始输入一份球队名单(比如 "Kickers"、"Shooters"、"Little Giants"),Alt+F11 打开 VBA 编辑器执行代码(或点命令按钮),C 列会列出所有球队两两配对的组合(例如 "Kickers vs Shooters"),并自动弹出打印预览。教程建议手动把 C 列文字居中,打印预览效果会更整齐。

📷 画面提示

宏运行完成后自动弹出的 Print Preview 打印预览窗口,显示 C 列列出的所有对阵组合


学完你会

常见错误

  • 内层循环如果写成 For j = 1 To rng.Count(从 1 开始而不是 i + 1),会重复列出"A vs B"和"B vs A"这种本质相同的对阵,也会多出"A vs A"这种无意义的自我配对
  • PrintPreview 会直接打开打印预览窗口,如果只是想看结果不想预览打印,可以把这行删掉或注释掉
  • 球队清单如果不是从 A1 开始的连续区域(中间有空行、或从别的单元格开始),CurrentRegion 抓到的范围会不符合预期,抓漏或抓多球队

Sources

Blog / Website:

  1. Possible Football Matches
只记在你的浏览器里,换设备不会同步。