Sub Golf()
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Application.EnableEvents = False
Dim Teams As Integer: Teams = 16
Dim AA() As Object: ReDim AA(1 To Teams)
Dim AL As Object: Set AL = CreateObject("System.Collections.ArrayList")
Dim r As Range: Set r = Range("E3:E18")
Dim SP() As String
Dim v As Variant
For k = 1 To UBound(AA)
Set AA(k) = CreateObject("System.Collections.ArrayList")
Next k
For i = 0 To Teams - 1
For j = 0 To Teams - 1
v = i + 1
AA(v).Add Join(Array(v, ((j) Mod Teams) + 1), ",")
Next j
Next i
For col = 1 To 4
For ro = 1 To Teams
Randomize
ri = Int(AA(ro).Count * Rnd())
SP = Split(AA(ro).Item(ri), ",")
AL.Add AA(ro).Item(ri)
AA(ro).removeAt (ri)
AA(SP(1)).Remove (SP(1) & "," & SP(0))
Next ro
With r
.Value = Application.Transpose(AL.toArray)
.TextToColumns DataType:=xlDelimited, Comma:=True
End With
Set r = r.Offset(, 2)
AL.Clear
Next col
Application.ScreenUpdating = True
Application.DisplayAlerts = True
Application.EnableEvents = True
End Sub