如何在Excel中做组合数,并显示出来?

例如:有10个人,每个人都在26个字母中自由选出了8个字母组成一组数据,这样就有了10组数据。我想从这10组数据(都是已知的)中随意抽出3组进行自由组合(不考虑顺序),在Excel中做出结果来。请各位大大帮帮忙,感激不尽。或者有其他方法也可以介绍,谢谢。

1.首先,看一下原始数据。A1和A2是两个主等级,B1:B4是四个附属等级,每个主等级都有四个附属等级。需要在C列显示出所有的组合情况。

2.考虑用INDEX函数来实现这个功能。首先来看一下INDEX第二参数如何做。

双击C1,输入公式=INT((ROW(A1)-1)/4)+1,下拉可以看到1出现了4次,2也出现了4次,这是因为B列数据4次以后就需要在A列偏移一个单元格。


3.外面嵌套INDEX函数,输入:

=INDEX($A$1:$A$2,INT((ROW(A1)-1)/4)+1)

下拉后就可以看到“一等”和“二等”各出现了4次。

4.第二列数据和第一列数据不一样,我们需要循环引用B列的数据。也就是让1,2,3,4循环出现。所以我们考虑用MOD函数。双击D1,输入公式:

=MOD(ROW(A1)-1,4)+1

下拉后我们可以看到如下图的效果:


5.同样,外层嵌套INDEX函数,可以循环获得B列的数据,4行一遍:

=INDEX($B$1:$B$4,MOD(ROW(A1)-1,4)+1)


6.最后,把公式合并在一个单元格中,就生成了最终结果组合。

=INDEX($A$1:$A$2,INT((ROW(A1)-1)/4)+1)&INDEX($B$1:$B$4,MOD(ROW(A1)-1,4)+1)

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-12-16

问题的实质是求出10组数据中取出3组的所有组合。把10组数据编号为1到10。用如下VBA程序可求得120个3个一组的数据组合:

Sub get3from10()

Dim i1 As Integer, i2 As Integer, i3 As Integer, i As Integer, j As Integer

Range("A:F").ClearContents

i = 1

j = 1

For i1 = 1 To 8

  For i2 = i1 + 1 To 9

    For i3 = i2 + 1 To 10

      Cells(i, j) = i1 & "," & i2 & "," & i3

      i = i + 1

      If i = 21 Then

        i = 1

        j = j + 1

      End If

    Next i3

  Next i2

Next i1

End Sub

运算结果如下:


再从120个数据组合中随机抽取一个如下:
A21=RANDBETWEEN(1,120)
A22=OFFSET($A$1,MOD(A21-1,20),INT((A21-1)/20))
A22即所求的。按一次F9可得到另一个随机抽取的数据组合。

本回答被网友采纳
第2个回答  2013-08-05
不用说得那么复杂,其实就是在十个人里随机选3个出来而已吧?
用个随机函数作基础去选就可以了。
我现在用IPAD上的网,没有ExceI,明天如果你还没解决,写给你。
第3个回答  2013-08-05

按F9刷新

相似回答