Excelでトーナメント表を作る際に同じ所属同士を回避する方法

Excel

Excelでトーナメント表を作る場合、RAND関数を使ってシャッフルすることは簡単ですが、同じ所属同士が一回戦で当たらないようにするには少し工夫が必要です。この記事ではその手順を詳しく解説します。

1. データの準備

まず、選手名と所属を別々の列に入力します。例としてA列に選手名、B列に所属を入力してください。

例: A2:A17に選手名、B2:B17に所属名

2. シャッフル用のRAND関数を追加

C列に=RAND()関数を入力し、選手ごとにランダムな数値を作ります。その後、RAND列で昇順に並べ替えると選手がランダムに並びます。

3. 同じ所属同士を回避する手順

一回戦で同じ所属が対戦しないようにするには、VBAまたは手動でチェックする方法があります。

  • 手動の場合: 並べ替えたリストを確認し、同じ所属が隣同士になった場合は入れ替える
  • VBAの場合: 簡単なスクリプトで、同じ所属同士が隣にならないように自動で並べ替え可能

VBA例:

Sub ShuffleAvoidSameTeam()
Dim i As Integer, j As Integer
Dim tmp As Variant
For i = 2 To LastRow
    For j = i + 1 To LastRow
        If Cells(i, 2).Value = Cells(j, 2).Value Then
            tmp = Cells(j, 1).Value
            Cells(j, 1).Value = Cells(i, 1).Value
            Cells(i, 1).Value = tmp
        End If
    Next j
Next i
End Sub

4. 実践例と注意点

実際にシャッフル後、所属が重複している箇所を確認し、必要に応じて手動で微調整します。完全自動で回避したい場合は、VBAスクリプトの利用が便利です。

注意点として、参加人数や所属数によっては完全に同じ所属同士を避けられない場合もあります。その場合は、二回戦以降で調整するのが現実的です。

5. まとめ

Excelでトーナメント表を作る際、RAND関数でシャッフル後、同じ所属同士の対戦を避けるには手動調整かVBAを活用する方法があります。これにより、公平な組み合わせのトーナメント表を作成できます。

コメント

タイトルとURLをコピーしました