excel 组合排列

来源:百度知道 编辑:UC知道 时间:2024/05/19 14:31:57
我们有20个人轮流比赛,每一个人代表一个数字,两个人为一组进行比赛,而且第一个人都必须跟剩下都有比赛过。

数字1-20,想要组合成如:
第一轮:
1-2
3-4
5-6
7-8
....
19-20

第二轮:
2-3
4-5
6-7
...
20-1

第三轮:
....

请问用EXCEL如何计算出来.

第一列数据是编号,第二列显示组合:
Dim S$, Z&, M As Long
Dim Arr1, Arr2()

Private Sub CommandButton1_Click()
Z = [A65535].End(xlUp).Row
Arr1 = Range(Cells(1, 1), Cells(Z, 1))
For n = 1 To Z - 1
DiGui n, n + 1
Next n
For n = 1 To M
Cells(n, 2) = Arr2(n)
Next n
End Sub

Private Sub DiGui(ByVal i%, ByVal j%)
If i <= Z And j <= Z Then
M = M + 1
ReDim Preserve Arr2(1 To M)
Arr2(M) = Arr1(i, 1) & ":" & Arr1(j, 1)
End If
If j < Z And i < Z - 1 Then DiGui i, j + 1
End Sub

COMBIN
计算从给定数目的对象集合中提取若干对象的组合数。利用函数 COMBIN 可以确定一组对象所有可能的组合数。
示例
=COMBIN(8,2) 从八个候选人中提取两个候选人的组合数 (28)