let
Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
Index0 = Table.AddIndexColumn(Source, "Index", 0, 1),
RL = Table.FromList(List.Random(Table.RowCount(Index0)), Splitter.SplitByNothing(), null, null, ExtraValues.Error),
Index1 = Table.AddIndexColumn(RL, "Index", 0, 1),
Merge = Table.NestedJoin(Index0,{"Index"},Index1,{"Index"},"Added Index",JoinKind.LeftOuter),
Expand = Table.ExpandTableColumn(Merge, "Added Index", {"Column1"}, {"Column1"}),
Sort = Table.Sort(Expand,{{"Column1", Order.Ascending}}),
Rank = Table.AddIndexColumn(Sort, "Rank", 0, 1),
Sort1 = Table.Sort(Rank,{{"Index", Order.Ascending}}),
RC = Table.RemoveColumns(Sort1,{"Index", "Column1"}),
Groups = Table.AddColumn(RC, "Group", each if [Rank] < Int64.From(Table.RowCount(Sort1) / 2) then 0 else 1),
GroupedRows = Table.Group(Groups, {"Group"}, {{"Count", each _, type table}}),
gIndex = Table.TransformColumns(GroupedRows, {{"Count", each Table.AddIndexColumn(_, "Index", 0,1)}}),
Players = Table.TransformColumns(gIndex, {{"Count", each Table.AddColumn(_, "Players", each {"Player 1", "Player 2", "Player 3"})}}),
pExpand = Table.TransformColumns(Players, {{"Count", each Table.ExpandListColumn(_, "Players")}}),
rNum = Table.Buffer(Table.TransformColumns(pExpand, {{"Count", (tbl) => Table.AddColumn(tbl, "R", (rl) => List.Random(Table.RowCount(tbl)){rl[Index]})}})),
rSort = Table.TransformColumns(rNum, {{"Count", each Table.Sort(_, "R")}}),
rRank = Table.TransformColumns(rSort, {{"Count", each Table.AddIndexColumn(_, "gRank", 0, 1)}}),
Link = Table.NestedJoin(rRank{0}[Count], "gRank", rRank{1}[Count], "gRank", "Link"),
ExpandLink = Table.ExpandTableColumn(Link, "Link", {"Teams", "Players"}, {"Opp Team", "Opp Player"}),
ROC = Table.SelectColumns(ExpandLink,{"Teams", "Players", "Opp Team", "Opp Player"}),
Dupe = Table.DuplicateColumn(ROC, "Teams", "Teams - Copy"),
Split = Table.SplitColumn(Dupe, "Teams - Copy", Splitter.SplitTextByDelimiter(" ", QuoteStyle.Csv), {"Teams - Copy.1", "Teams - Copy.2"}),
Type = Table.TransformColumnTypes(Split,{{"Teams - Copy.1", type text}, {"Teams - Copy.2", Int64.Type}}),
SortRows = Table.Sort(Type,{{"Teams - Copy.2", Order.Ascending}, {"Players", Order.Ascending}}),
RC2 = Table.RemoveColumns(SortRows,{"Teams - Copy.1", "Teams - Copy.2"})
in
RC2