Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 3474|回复: 13

[已解决]12个数随机抽取6个数进行求和,如何穷尽?

[复制链接]
发表于 2016-11-28 13:54 | 显示全部楼层 |阅读模式
各位大咖:
          从1,2,3,4,5,6,7,8,9,10,11,12总共12个数,随机抽取6个数组成组合,如何求各组合的和值(穷举)?例如 取1,2,3,4,5,6 组合 和值为21,如果是1,2,3,4,5,7组合,和值尾22,如何穷举 谢谢各位大咖帮忙!
最佳答案
2016-11-29 09:58
本帖最后由 香川群子 于 2016-11-29 12:40 编辑

按列输出的代码:

  1. Dim sj, jg(), k&, l&, m&, n&
  2. Sub Combin_1()
  3.     tms = Timer
  4.     sj = [a1].CurrentRegion: l = UBound(sj)
  5.     m = 12: n = 6: k = WorksheetFunction.Combin(m, n)
  6.     ReDim jg(1 To l, k)
  7.    
  8.     k = 0: Call dgZH(0, 1)
  9.     MsgBox Format(Timer - tms, "0.000s")
  10.     [o1].CurrentRegion = "": [o1].Resize(l, k) = jg
  11. End Sub
  12. Sub dgZH(j1&, t&)
  13.     Dim i&, j&
  14.     For j = j1 + 1 To 6 + t 'm - n + t
  15.         For i = 1 To l
  16.             jg(i, k) = jg(i, k) + sj(i, j)
  17.         Next
  18.         If t < n Then
  19.             Call dgZH(j, t + 1)
  20.         Else
  21.             k = k + 1
  22.             For i = 1 To l
  23.                 jg(i, k) = jg(i, k - 1)
  24.             Next
  25.         End If
  26.         For i = 1 To l
  27.             jg(i, k) = jg(i, k) - sj(i, j)
  28.         Next
  29.     Next
  30. End Sub
复制代码


注意输出语句要改一下:
[o1].CurrentRegion = "": [o1].Resize(l, k) = jg

我测试时用了数字10,只能输出10列。
发表于 2016-11-28 14:16 | 显示全部楼层
回复

使用道具 举报

发表于 2016-11-28 14:18 | 显示全部楼层
COMBIN(12,6)=924种,这类问题得找香川群子大神
回复

使用道具 举报

 楼主| 发表于 2016-11-28 14:43 | 显示全部楼层
是我说的不全
应该还有N行
1,2,3,4,5,6,7,8,9,10,11,12
。。。。。。。。。。。。
4,5,8,10,12,14,18,20,30,33,36,38
就是这12列种随机选择6列进行求和
穷举一下
回复

使用道具 举报

发表于 2016-11-28 14:51 | 显示全部楼层
sailorgo 发表于 2016-11-28 14:43
是我说的不全
应该还有N行
1,2,3,4,5,6,7,8,9,10,11,12

一行就是924种,你有多少行?自己去算一下这个计算量?算出来的结果放在哪里?又是彩票吗?
回复

使用道具 举报

 楼主| 发表于 2016-11-28 14:52 | 显示全部楼层

N行 共12列,如何对12列选出6列进行组合后求和(穷举的)

各位大咖:
      有N行数据,共12列,对这12列数据选出6列进行组合,对各组合进行求和
       例如:
           第一行 1,2,3,4,5,6,7,8,9,10,11,12,
.............................................................
            第N-1行 5,8,10,11,12,15,17,22,24,28,36,42
          第N行    3,4,6,9,10,14,12,16,18,21,23,28,   
第1-6列为一个组合  求值分别为
            21
.....................
            61
            46
如何用vba进行穷举  多谢!
回复

使用道具 举报

发表于 2016-11-28 17:16 | 显示全部楼层
有时光来讨答案的吧,停一下学习学习多好啊
回复

使用道具 举报

 楼主| 发表于 2016-11-28 18:09 | 显示全部楼层
望帝春心 发表于 2016-11-28 14:51
一行就是924种,你有多少行?自己去算一下这个计算量?算出来的结果放在哪里?又是彩票吗?

因为有N行,所以结果只能放在12列之后,彩票不需要求和吧
回复

使用道具 举报

发表于 2016-11-28 18:19 | 显示全部楼层
sailorgo 发表于 2016-11-28 18:09
因为有N行,所以结果只能放在12列之后,彩票不需要求和吧

哦,等大神出招吧,感觉好难
回复

使用道具 举报

 楼主| 发表于 2016-11-28 20:28 | 显示全部楼层
不知道是用多条件求和比较好?还是用VBA?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-4-19 06:01 , Processed in 0.367753 second(s), 10 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表