You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Excel中生成A列参赛者的仅两两组合?

Excel生成两两参赛者组合的方法

假设你的参赛者姓名在A列(示例为A1:A5,无表头),以下是几种仅生成两两组合的可行方法:

方法一:公式法(无需宏)

生成不重复的两两组合(如John-Melinda,不重复生成Melinda-John)

在B1单元格输入以下公式,下拉填充直到出现空值:

=IF(ROW()-1>COMBIN(COUNTA(A:A),2),"",INDEX(A:A,INT((SQRT(8*(ROW()-1)+1)-1)/2)+1)&"-"&INDEX(A:A,ROW()-1-INT((SQRT(8*(ROW()-1)+1)-1)/2)*(INT((SQRT(8*(ROW()-1)+1)-1)/2)+1)/2+INT((SQRT(8*(ROW()-1)+1)-1)/2)+2))

公式说明:COMBIN(COUNTA(A:A),2)计算总组合数,通过数学公式遍历所有i<j的配对,避免重复。

生成双向两两组合(同时包含John-Melinda和Melinda-John)

在B1单元格输入以下公式,下拉填充至空值:

=IF(ROW()>COUNTA(A:A)*COUNTA(A:A)-COUNTA(A:A),"",INDEX(A:A,INT((ROW()-1)/(COUNTA(A:A)-1))+1)&"-"&INDEX(A:A,MOD(ROW()-1,COUNTA(A:A)-1)+IF(MOD(ROW()-1,COUNTA(A:A)-1)>=INT((ROW()-1)/(COUNTA(A:A)-1)),2,1)))

方法二:VBA宏法

按Alt+F11打开VBA编辑器,插入模块后粘贴对应代码,运行宏即可生成组合:

生成不重复两两组合

Sub GenerateUniquePairs()
    Dim nameRange As Range
    Dim names() As String
    Dim i As Integer, j As Integer
    Dim outputRow As Integer
    
    ' 定位A列所有非空姓名单元格
    Set nameRange = Range("A1", Range("A" & Rows.Count).End(xlUp))
    names = nameRange.Value
    outputRow = 1 ' 输出到B列起始行,可自行修改
    
    ' 遍历i<j的配对,避免重复
    For i = 1 To UBound(names)
        For j = i + 1 To UBound(names)
            Cells(outputRow, 2).Value = names(i, 1) & "-" & names(j, 1)
            outputRow = outputRow + 1
        Next j
    Next i
End Sub

生成双向两两组合

Sub GenerateAllPairs()
    Dim nameRange As Range
    Dim names() As String
    Dim i As Integer, j As Integer
    Dim outputRow As Integer
    
    Set nameRange = Range("A1", Range("A" & Rows.Count).End(xlUp))
    names = nameRange.Value
    outputRow = 1
    
    ' 遍历所有i≠j的配对
    For i = 1 To UBound(names)
        For j = 1 To UBound(names)
            If i <> j Then
                Cells(outputRow, 2).Value = names(i, 1) & "-" & names(j, 1)
                outputRow = outputRow + 1
            End If
        Next j
    Next i
End Sub

方法三:Power Query法(可视化操作)

  1. 选中A列数据,点击「数据」选项卡 →「从表格/区域」,导入Power Query编辑器(若提示无表头,选择「我的表格有标题」或忽略,后续可调整列名)。
  2. 点击「添加列」→「自定义列」,输入公式:=List.RemoveItems(Table.Column(#"更改的类型", "姓名"), {[姓名]}),将新列命名为「配对候选」。
  3. 点击新列右侧的展开按钮,选择「展开到新行」。
  4. 再次添加自定义列,输入公式:=[姓名]&"-"&[配对候选]。
  5. 若需去重,点击「开始」→「删除行」→「删除重复项」,选择生成的组合列。
  6. 点击「关闭并上载」,将结果导入Excel表格。

内容的提问来源于stack exchange,提问作者user16068355

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 01:57:38