excel 排列组合求和

比如在A1:A20有20个不同的数字,要求在B列到F列分别选出5个不同数字作为组合,并且在G列进行求和,请问如何实现,并且在下方N行内排列出所有的组合和并且求和,请问如何实现,不胜感激,如可以请解释的详细一点,谢谢大神们,如果太复杂,或者根本无法实现就算了

  20选5组合数共15504个, 用公式恐怕很难做到, 即使有了公式, 右拉再下拉也够费力的了. 所以建议用VBA(启用宏), 不要嫌麻烦, 毕竟这是一劳永益的事.


  按 ALT+F11 组合键打开代码窗口, 粘贴下面代码, 然后 按F5运行, 运行成功后会有一个"ok"的提示.


    Sub 组合()

    Dim arr(15504, 5) '20选5的组合数为15504

    For a = 1 To 16

    For b = a + 1 To 17

    For c = b + 1 To 18

    For d = c + 1 To 19

    For e = d + 1 To 20

    arr(n, 0) = Cells(a, 1)

    arr(n, 1) = Cells(b, 1)

    arr(n, 2) = Cells(c, 1)

    arr(n, 3) = Cells(d, 1)

    arr(n, 4) = Cells(e, 1)

    arr(n, 5) = Cells(a, 1) + Cells(b, 1) + Cells(c, 1) + Cells(d, 1) + Cells(e, 1)

    n = n + 1

    Next e, d, c, b, a

    [b1].Resize(15504, 6) = arr

    MsgBox "ok"

    End Sub


  

  详见附件:↓


温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-03-24
复杂倒不算复杂,但数据太大,几乎没法完成,因为不考虑数字的排位顺序的组合就有15504种,若考虑则有1860480种。
第2个回答  2013-03-24
使用二个辅助列,假设H和I列,以下步骤完成:
1、在H1中输入公式:=RAND(),下拉到H20;
2、在I1中输入公式:=RANK(H1,H$1:H$20) 下拉到I20;
3、B1中输入公式:=VLOOKUP(COLUMN(A1),IF({1,0},$I$1:$I$20,$A$1:$A$20),2,0),右拉到F1;
4、在G1中输入公式:=SUM(B1:F1)

通过以上步骤完成,从20个数中随机抽取5个不重复的数,并求和。
通过按F9,改变数据,每按一次将在B1到G1中得到一组新的数据。本回答被网友采纳
第3个回答  2013-03-24
不好意思这的确非常复杂,光用函数肯定是无法解决的,因为涉及到随机选取。
只能依靠VBA,可能只有大神能帮你,不过在这里提问基本上不会有人替你实现这样的功能。
十分抱歉。
第4个回答  2013-03-24
确实挺复杂的,(思路)方法如下:
用VBA 首先求出C 20 5 (20个数选出的组合情况)的组合情况
共有 20*19*18*17*16/(5*4*3*2*1)=15504 种
将其组合情况例如 1 2 3 4 5 付给A列作为其后的坐标值 就变为 A1 A2 A3 A4 A5
依次将其组合填到你需要的位置 对A1+A2+A3+A4+A5求和即可。
相似回答